Ruby on rails 软删除mongoid文档及相关文档

Ruby on rails 软删除mongoid文档及相关文档,ruby-on-rails,ruby-on-rails-3,mongoid,soft-delete,Ruby On Rails,Ruby On Rails 3,Mongoid,Soft Delete,我有2个模型,用户和帖子 class User include Mongoid::Document include Mongoid::Paranoia references_many :posts, :autosave => true, :dependent => :destroy end class Post include Mongoid::Document referenced_in :user end 现在,当我软删除用户时,我也想软删除帖子。我有什么

我有2个模型,用户和帖子

class User
  include Mongoid::Document
  include Mongoid::Paranoia
  references_many :posts, :autosave => true, :dependent => :destroy
end

class Post
  include Mongoid::Document
  referenced_in :user
end
现在,当我软删除用户时,我也想软删除帖子。我有什么办法可以做到这一点吗


对于软删除我正在使用的文档,

销毁前回调是否能满足您的需要?e、 g

class User
  include Mongoid::Document
  include Mongoid::Paranoia
  references_many :posts, :autosave => true, :dependent => :destroy
  before_destroy :delete_posts

  def delete_posts
    posts.delete_all
  end
end

class Post
  include Mongoid::Document
  include Mongoid::Paranoia
  referenced_in :user
end

为什么要删除用户的帖子?如果我遵循某个线程(我假设帖子是线程化的),并且某个在线程中写了一些帖子的用户删除了他的个人资料,我不希望他的帖子被删除。这将破坏post线程的流


我知道这并不能回答你的问题,但如果你真的需要删除这些帖子,这可能是你考虑的理由

我也这么做了,但这个解决方案对我来说似乎有点像黑客。我在想偏执狂是否会包括这样的东西。另外,posts.delete_all会进行硬删除,我必须循环浏览帖子并逐个删除。我同意这并不是那么优雅。有点奇怪的是,调用了回调,但级联规则却没有。目前有一个相关的未决问题,因此将来可能会发生变化。这里有一个不同的解决方案——在销毁之前:级联!我也尝试过cascade,但它只会破坏帖子,但如果帖子引用了很多:评论呢?在这种情况下,它不是删除注释。