Могут ли дети иметь более одного родителя? Если нет, то многие / assign_to должны нормально работать:
class Node
include MongoMapper::Document
key :text, String
key :parent_node_id, ObjectId
belongs_to :parent_node, :class_name => 'Node'
many :child_nodes, :foreign_key => :parent_node_id, :class_name => 'Node'
end
Если узлы могут иметь несколько родителей ...
class Node
include MongoMapper::Document
key :text, String
key :parent_node_ids, Array, :typecast => 'ObjectId'
many :parent_nodes, :in => :parent_node_ids, :class_name => 'Node'
# inverse of many :in is still forthcoming in MM
def child_nodes
Node.where(:parent_node_ids => self.id)
end
end
# ... or store an array of child_node_ids instead ...
class Node
include MongoMapper::Document
key :text, String
key :child_node_ids, Array, :typecast => 'ObjectId'
many :child_nodes, :in => :child_node_ids, :class_name => 'Node'
# inverse of many :in is still forthcoming in MM
def parent_nodes
Node.where(:child_node_ids => self.id)
end
end
Это то, что вы ищете?