Skip to content

Instantly share code, notes, and snippets.

@dbackeus
Created January 11, 2011 14:06
Show Gist options
  • Save dbackeus/774446 to your computer and use it in GitHub Desktop.
Save dbackeus/774446 to your computer and use it in GitHub Desktop.
Mongoid 2.0 rc validates stuff like there's no tomorrow
class Account
include Mongoid::Document
references_many :videos
end
class Video
include Mongoid::Document
referenced_in :account
field :title, :type => String
before_validation :set_metadata, :on => :create
validates_presence_of :account
validates_presence_of :title
private
def set_metadata
p "set_metadata"
self.title = "Awesome"
raise "why?" if persisted?
end
end
a = Account.create!
Video.create! :account => a
Account.first.videos # Will raise "why?"
# RuntimeError: why?
# from /Users/druiden/development/rails/mongoid_test/app/models/video.rb:17:in `set_metadata'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:414:in `_run_validation_callbacks'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/callbacks.rb:24:in `valid?'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/activemodel-3.0.3/lib/active_model/validations.rb:187:in `invalid?'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/persistence/update.rb:44:in `persist'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/persistence.rb:86:in `update'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/persistence.rb:130:in `upsert'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/contexts/mongo.rb:177:in `block in iterate'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/cursor.rb:44:in `block in each'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongo-1.1.5/lib/mongo/cursor.rb:229:in `each'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/cursor.rb:43:in `each'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/contexts/mongo.rb:177:in `iterate'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/criteria.rb:88:in `block in each'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/criteria.rb:88:in `tap'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/criteria.rb:88:in `each'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/relations/referenced/many.rb:29:in `map'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/relations/referenced/many.rb:29:in `bind'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/relations/accessors.rb:28:in `block in build'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/relations/accessors.rb:27:in `tap'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/relations/accessors.rb:27:in `build'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/mongoid-2.0.0.rc.3/lib/mongoid/relations/accessors.rb:118:in `block (2 levels) in getter'
# from (irb):18
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start'
# from /Users/druiden/.rvm/gems/ruby-1.9.2-p136/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>'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment