我已经遇到了几个小时的问题,并且用谷歌搜索自己毫无意义。
我有一个带有嵌入式文档的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删除嵌入文档的正确方法是什么?
答案 0 :(得分:7)
嗯它很简单但很棘手......
删除标记时,需要重新加载父对象。
代码
model.tags.delete_all
model.reload
model.tags.each do |tag|
tag.delete
end
model.reload
model.tags.destroy_all
model.reload
这是重新加载模型的方式,您将获得正确的对象