我已经遇到一个问题好几个小时了,我在谷歌上搜索了自己。
我有一个带有嵌入文档的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

这是重新加载模型的方式,您将得到正确的对象

10-04 22:12
查看更多