如何在另一个文档中嵌入Mongoid树?

时间:2011-01-11 22:24:50

标签: ruby-on-rails mongodb mongoid

我正在使用mongoid-tree,但此问题可能适用于其他acts_as_tree ports for Mongoid

我想要一个节点树,我希望整个树嵌入另一个文档中。我的问题是,这实际上只需要嵌入根节点,但所有节点都具有相同的embedded_in。就我而言:

class Container
  include Mongoid::Document

  embeds_one :root, :class_name => "Node"
end

class Node
  include Mongoid::Document
  include Mongoid::Tree

  embedded_in :container, :inverse_of => :root
end

如何设置它以便每个树只嵌入一个记录_在容器中?还有另一种方法会更好吗?

1 个答案:

答案 0 :(得分:0)

mongoid-tree的作者benedikt在GitHub上回答。

目前,Mongoid :: Tree不适用于嵌入式节点。他建议:

class Container
  include Mongoid::Document

  referenced_in :node, :inverse_of => :container
end

class Node
  include Mongoid::Document
  include Mongoid::Tree

  references_one :container
end

这样您就可以将任何节点分配给容器。您还可以覆盖Node.container方法以调用子节点的root.container,这样您也可以获得子节点的容器。