-
Type: Task
-
Resolution: Done
-
Affects Version/s: None
-
Component/s: None
-
Labels:
UPDATE
The bug reported below occurs because the inverse_of option is missing. Adding inverse_of to the relations fixes the problem. However, this problem doesn't occur if Mongoid::Versioning is removed from the class.
Thus, this bug should not occur if the inverse_of option is missing when using Mongoid::Versioning .
Mondoid::Versioning breaks recursive parent/child relationships. The code
class Simple include Mongoid::Document # comment this line out and there will be no error include Mongoid::Versioning field :rule, type: String, default: 'hello' belongs_to :parent_rule, class_name: 'Simple' has_many :child_rules, class_name: 'Simple', dependent: :delete end root = Simple.create!({message: "root"}) child = Simple.create! root.child_rules << child
will generate
undefined method `first' for #<Simple:0x0000010399ac88>
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:385:in `method_missing'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/attributes.rb:182:in `method_missing'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/many.rb:241:in `block (2 levels) in substitute'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/atomic.rb:61:in `call'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/atomic.rb:61:in `block in atomically'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/atomic.rb:82:in `call'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/atomic.rb:82:in `count_executions'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/atomic.rb:60:in `atomically'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/many.rb:240:in `block in substitute'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/many.rb:233:in `tap'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/embedded/many.rb:233:in `substitute'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/accessors.rb:126:in `block (2 levels) in setter'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/bindings/referenced/many.rb:26:in `block in bind_one'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/binding.rb:21:in `binding'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/bindings/referenced/many.rb:21:in `bind_one'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/proxy.rb:19:in `bind_one'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/referenced/many.rb:295:in `append'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/referenced/many.rb:35:in `block (2 levels) in <<'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/referenced/many.rb:33:in `each'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/referenced/many.rb:33:in `block in <<'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/referenced/batch.rb:65:in `count_executions'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/referenced/batch.rb:42:in `batched'
/Users/sim/.rvm/gems/ruby-1.9.2-p180@match_admin/gems/mongoid-2.2.1/lib/mongoid/relations/referenced/many.rb:32:in `<<'