Как встроить монгоидное дерево в другой документ? - PullRequest
2 голосов
/ 12 января 2011

Я использую 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

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

1 Ответ

0 голосов
/ 18 января 2011

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

...