删除嵌入文档的Mongoid不会持久存在

时间:2012-04-02 06:59:49

标签: ruby-on-rails mongodb mongoid

我已经遇到了几个小时的问题,并且用谷歌搜索自己毫无意义。

我有一个带有嵌入式文档的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删除嵌入文档的正确方法是什么?

1 个答案:

答案 0 :(得分:7)

嗯它很简单但很棘手......

删除标记时,需要重新加载父对象。

代码

model.tags.delete_all
model.reload

 model.tags.each do |tag|
  tag.delete
 end
 model.reload

model.tags.destroy_all
model.reload

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