我有一个模型“条目”,其中有许多项目“项目”是嵌入文档:
class Entry
embeds_many :items, cascade_callbacks: true
...
end
问题是我必须移动一堆嵌入式文档项目,包括删除一些,添加其他文件,以及在Entrys之间移动其他文件。这似乎是我在Entry.items上做的任何操作,如:
entry.items << item or entry.items.delete(i)
导致自己的数据库写入。如果我做了很多看似非常昂贵的改变。有没有办法告诉mongoid让我添加项目,删除它们,在本地移动它们,只有当一切都完成后发送一个entry.save!写入数据库?
答案 0 :(得分:0)
通过执行以下操作替换items数组:
entry.items = new_items
数据库效率最高。但事实证明是错误的,确保你有最新版本的mongoid并做一个entry.save如果entry.changed? || entry.new_record?因为在修改项目时偶尔会保存上面的条目。