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

ret*_*ved 3 ruby-on-rails mongodb mongoid

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

我有一个带有嵌入式文档的Mongoid模型,如下所示:

embeds_many :tags, :as => :taggable
Run Code Online (Sandbox Code Playgroud)

出于某种原因,尝试删除此文档似乎在控制台中工作,但文件在重新加载后返回.我尝试过以下方法:

model.tags.delete_all

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

model.tags.destroy_all
Run Code Online (Sandbox Code Playgroud)

完成上述所有操作后,我可以确认model.tags返回一个空数组.然后为了安全起见,我甚至打电话给model.save.如果我重新加载模型,所有嵌入的标签都会返回.

使用Mongoid删除嵌入文档的正确方法是什么?

Arp*_*nav 7

那很简单但很棘手......

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

model.tags.delete_all
model.reload

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

model.tags.destroy_all
model.reload
Run Code Online (Sandbox Code Playgroud)

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