我已经遇到一个问题好几个小时了,我在谷歌上搜索了自己。
我有一个带有嵌入文档的Mongoid模型,如下所示:
embeds_many :tags, :as => :taggable
出于某种原因,尝试删除此文档似乎在控制台中起作用,但在重新加载后文档会返回。我试过以下方法:
model.tags.delete_all
model.tags.each do |tag|
tag.delete
end
model.tags.destroy_all
在以上所有操作之后,我可以确认model.tags返回一个空数组。为了安全起见,我甚至打电话给model.save。如果我重新加载模型,所有嵌入的标记都会返回。
使用Mongoid删除嵌入文档的正确方法是什么?
最佳答案
很简单但很棘手…
删除标记时,需要重新加载父对象。
代码
model.tags.delete_all
model.reload
model.tags.each do |tag|
tag.delete
end
model.reload
model.tags.destroy_all
model.reload
这是重新加载模型的方式,您将得到正确的对象