-
Type: Bug
-
Resolution: Fixed
-
Priority: Minor - P4
-
Affects Version/s: 7.0.0
-
Component/s: None
-
Environment:Ubuntu, Ruby 2.5.1, Mongoid 7.0.0, MongoDB 3.6.3
Setting up relations with models that are in a namespace does not work:
# model_a.rb module Space class ModelA include Mongoid::Document belongs_to :model_b end end # model_b.rb module Space class ModelB include Mongoid::Document has_one :model_a end end # app.rb require_relative 'model_a.rb' require_relative 'model_b.rb' a = Space::ModelA.create b = Space::ModelB.create(model_a: a) ####### Result ####### Traceback (most recent call last): 29: from app.rb:16:in `<main>' 28: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/persistable/creatable.rb:146:in `create' 27: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/threaded/lifecycle.rb:161:in `_creating' 26: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/persistable/creatable.rb:150:in `block in create' 25: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/persistable/creatable.rb:150:in `new' 24: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/document.rb:114:in `initialize' 23: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/threaded/lifecycle.rb:89:in `_building' 22: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/document.rb:119:in `block in initialize' 21: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/attributes/processing.rb:29:in `process_attributes' 20: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/attributes/processing.rb:123:in `process_pending' 19: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/attributes/processing.rb:135:in `process_relations' 18: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/attributes/processing.rb:135:in `each_pair' 17: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/attributes/processing.rb:140:in `block in process_relations' 16: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/accessors.rb:247:in `block (2 levels) in define_setter!' 15: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/accessors.rb:140:in `without_autobuild' 14: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/accessors.rb:256:in `block (3 levels) in define_setter!' 13: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/accessors.rb:25:in `__build__' 12: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/accessors.rb:42:in `create_relation' 11: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/referenced/has_one/buildable.rb:23:in `build' 10: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/referenced/has_one/buildable.rb:31:in `clear_associated' 9: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/relatable.rb:304:in `inverse' 8: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/relatable.rb:121:in `inverses' 7: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/referenced/has_one.rb:187:in `determine_inverses' 6: from /usr/local/lib/ruby/gems/2.5.0/gems/mongoid-7.0.0/lib/mongoid/association/relatable.rb:160:in `klass' 5: from /usr/local/lib/ruby/gems/2.5.0/gems/activesupport-5.1.6/lib/active_support/core_ext/string/inflections.rb:66:in `constantize' 4: from /usr/local/lib/ruby/gems/2.5.0/gems/activesupport-5.1.6/lib/active_support/inflector/methods.rb:267:in `constantize' 3: from /usr/local/lib/ruby/gems/2.5.0/gems/activesupport-5.1.6/lib/active_support/inflector/methods.rb:267:in `inject' 2: from /usr/local/lib/ruby/gems/2.5.0/gems/activesupport-5.1.6/lib/active_support/inflector/methods.rb:267:in `each' 1: from /usr/local/lib/ruby/gems/2.5.0/gems/activesupport-5.1.6/lib/active_support/inflector/methods.rb:269:in `block in constantize' /usr/local/lib/ruby/gems/2.5.0/gems/activesupport-5.1.6/lib/active_support/inflector/methods.rb:269:in `const_get': uninitialized constant ModelA (NameError) Did you mean? Module
This worked perfectly in version 6.4
It can be solved by adding `class_name: 'Space::ModelA' etc to the relations.
Is relations with namespaced models broken in version 7, or is this change's documenation missing?
- causes
-
MONGOID-4645 belongs_to in namespaced children fails to detect a non-namespaced association
- Closed
- is depended on by
-
MONGOID-4600 Release Mongoid 7.0.2
- Closed