在Mongoid中,如何将嵌入式文档传输到其他父级?

时间:2011-06-01 15:43:30

标签: embed mongoid

我使用下面的代码,但我不想删除/复制。我以前能够更改父ID,但Mongoid / MongoDB中的嵌入文档不存在

def move(new_parent)
  if self._parent != new_parent
    copy = self.dup
    self.delete
    new_parent.items << copy
  end
end

1 个答案:

答案 0 :(得分:2)

我的理解是嵌入式文档作为属性存储在父文档中 - 它们没有parent_id,因为它们实际上是其父级的一部分(因此,“嵌入”)。因此,重新定义它们的唯一方法是克隆&amp;删除 - 就像你做的那样。

你可能会把你的方法减少一行,但这就是它。

def move(new_parent)
  unless new_parent.id == parent.id
    new_parent.items << self.dup
    self.delete
  end
end