2

我有一个模型“条目”,其中包含许多作为嵌入文档的项目“项目”:

class Entry
  embeds_many :items, cascade_callbacks: true
  ...
end

问题是我必须移动一堆嵌入式文档项目,以删除一些、添加其他项目以及在条目之间移动其他项目。似乎我在 Entry.items 上执行的任何操作都像:

entry.items << item or entry.items.delete(i)

导致它自己的数据库写入。如果我做了很多看起来非常昂贵的改变。有没有办法告诉 mongoid 让我添加项目、删除它们、在本地移动它们,并且只有在一切都完成后才发送一个 entry.save!写入数据库?

4

1 回答 1

0

通过执行以下操作替换 items 数组:

entry.items = new_items 

是最高效的数据库。但事实证明这是错误的,请确保您拥有最新版本的 mongoid 并在 entry.changed 时执行 entry.save?|| entry.new_record?因为当您修改项目时,它有时不会保存上面的条目。

于 2012-09-01T14:02:31.690 回答