-
Type: Task
-
Resolution: Done
-
Affects Version/s: None
-
Component/s: None
-
Labels:
The latest commit (http://github.com/durran/mongoid/commit/54ac923b2f1149a6cff7b30b9d09c13ad03a5dc3) has a peculiar bug. I have a Membership model which is embedded in Account and belongs_to_related User.
In my specs to check that I'm validating presence of user I'm doing (actually through a macro method):
m = Membership.new(:user => nil)
m.valid?
m.errors[:user].should include("can't be blank")
Now this results in:
NoMethodError: undefined method `valid?' for nil:NilClass
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.rc/lib/active_support/whiny_nil.rb:48:in `method_missing'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/bundler/gems/mongoid-54ac923/lib/mongoid/associations/proxy.rb:15:in `send'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/bundler/gems/mongoid-54ac923/lib/mongoid/associations/proxy.rb:15:in `method_missing'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/bundler/gems/mongoid-54ac923/lib/mongoid/validations/associated.rb:27:in `validate_each'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/bundler/gems/mongoid-54ac923/lib/mongoid/validations/associated.rb:27:in `collect'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/bundler/gems/mongoid-54ac923/lib/mongoid/validations/associated.rb:27:in `validate_each'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activemodel-3.0.0.rc/lib/active_model/validator.rb:154:in `validate'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activemodel-3.0.0.rc/lib/active_model/validator.rb:151:in `each'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activemodel-3.0.0.rc/lib/active_model/validator.rb:151:in `validate'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb:309:in `send'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb:309:in `_callback_before_127'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb:414:in `_run_validate_callbacks'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activemodel-3.0.0.rc/lib/active_model/validations.rb:201:in `run_validations!'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activemodel-3.0.0.rc/lib/active_model/validations.rb:168:in `valid?'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/bundler/gems/mongoid-54ac923/lib/mongoid/callbacks.rb:18:in `valid?'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/gems/activesupport-3.0.0.rc/lib/active_support/callbacks.rb:408:in `_run_validation_callbacks'
from /Users/druiden/.rvm/gems/ruby-1.8.7-p249/bundler/gems/mongoid-54ac923/lib/mongoid/callbacks.rb:18:in `valid?'
from (irb):3>> exit
I can only replicate the error if I explicitly set :user to nil when building the model. I can however set :user_id to nil without the error so I guess it must be connected to the association logic.