how get validation messages from mangomapper using rails console ?

Posted by Alex on Stack Overflow See other posts from Stack Overflow or by Alex
Published on 2011-01-13T07:14:33Z Indexed on 2011/01/13 7:53 UTC
Read the original article Hit count: 620

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

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about validation