Ruby on rails 递归引用Mongoid会嵌入另一个文档中的多个
我有两个文档模型证明存在问题:Ruby on rails 递归引用Mongoid会嵌入另一个文档中的多个,ruby-on-rails,ruby,mongoid,Ruby On Rails,Ruby,Mongoid,我有两个文档模型证明存在问题: class Component include Mongoid::Document include Mongoid::Versioning recursively_embeds_many end class Institution include Mongoid::Document has_many :components end 我理解您不应该从另一个文档中引用嵌入式模型。然而,我希望通过递归嵌入的文档,有一种方法可以从另一个文档引用
class Component
include Mongoid::Document
include Mongoid::Versioning
recursively_embeds_many
end
class Institution
include Mongoid::Document
has_many :components
end
我理解您不应该从另一个文档中引用嵌入式模型。然而,我希望通过递归嵌入的文档,有一种方法可以从另一个文档引用树的顶部?如果无法将这些关系一起使用,在保持组件的递归性质的同时,我必须在机构和组件之间建立一对多关系,这有什么选择?您尝试的做法听起来很合理,但Mongoid不允许您通过关联将可嵌入另一个类的类关联起来。当我尝试时,在(第218行)向机构添加(顶级)组件时,出现了一个异常 最简单的选择是在机构中嵌入组件,例如
class Institution
include Mongoid::Document
embeds_many :components
end
否则,如果您想与不同机构共享组件树,我想您需要在模型中引入某种容器对象,并定义许多与机构的关联,例如:
class Component
include Mongoid::Document
include Mongoid::Versioning
recursively_embeds_many
end
class ComponentTree
include Mongoid::Document
embeds_many :components
has_and_belongs_to_many :institutions
end
class Institution
include Mongoid::Document
has_and_belongs_to_many :component_trees
end
这基本上就是我所做的。这并不是说概念上的组件不属于嵌入在机构中的组件,而是每个机构都会有很多组件,它们会嵌套得很深,甚至不想考虑文档大小限制。啊,是的,文档大小限制似乎常常是嵌入文档中的一个因素。虽然文档大小的限制最近已从4增加到16MB,但从性能角度来看,实际限制可能要低得多。