Hi,
I am basically teaching myself how to use RoR and MongoDB at the same time.
I am following the very good book / tutorial : http://railstutorial.org/
I decided to replace Sqlite3 by MongoDB using the mongomapper gem.
Everything works out about alright, but I am having some non-blocking little issues that I truly wish I could get rid of.
In chapter 6, when working with validation I got 2 issues:
- I don't know how to get the validations messages back like with Sqlite3.
The "standard" code is:
$ rails console --sandbox
>> user = User.new(:name => "", :email => "
[email protected]")
>> user.save
=> false
>> user.valid?
=> false
>> user.errors.full_messages
=> ["Name can't be blank"]
but if I try to do the same with MongoMapper, it throws an error saying that errors is undefined function. So does it mean that this is simply not implemented in mongomapper / mongo driver ? Or is there some other clever way to do this that I could not figure ?
Additional, 2 things here:
- I following the exemple in the book to the line, so I was expecting to be able to use the console in sandbox mode, but apparently that does not work either:
(...)ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/console/sandbox.rb:1:in `<top (required)>': uninitialized constant ActiveRecord (NameError)
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/application.rb:226:in `initialize_console'
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/application.rb:153:in `load_console'
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/commands/console.rb:26:in `start'
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start'
from /Users/Alex/.rvm/gems/ruby-1.9.2-p136@rails3/gems/railties-3.0.3/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Also, in the book they call "user" but I need to call "User" (note the capital U) why is that ? Is it like mangomapper does not follow the
Ruby naming convention or something ?
And finally, I am trying to validate the field email with a regex as shown in the tutorial. It does not throws any errors at the code, but whenever I try to insert it just won't ever accept it unless I comment out the :format option...
class User
include MongoMapper::Document
key :name, String, :required => true,
:length => { :maximum => 50 }
key :email, String, :required => true,
# :format => { :with => email_regex },
:uniqueness => { :case_sentitive => false}
timestamps!
end
Any advices you can provide on those topics would help me a lot !
Thanks,
Alex