Как встроить монгоидное дерево в другой документ?

Я использую mongoid-tree, но этот вопрос, вероятно, относится к другим acts_as_tree порты для Mongoid.

Мне нужно дерево узлов, и я хочу, чтобы все дерево было встроено в другой документ. Моя проблема в том, что на самом деле требуется только, чтобы корневой узел был встроен, но все узлы имеют один и тот же встроенный_вход. В моем случае:

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

Как я могу настроить это так, чтобы только одна запись на дерево была встроена_в контейнер? Есть ли другой подход, который был бы лучше?


person Turadg    schedule 11.01.2011    source источник


Ответы (1)


Автор 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 для дочерних узлов, чтобы получить контейнер и для подузлов.

person Turadg    schedule 18.01.2011