软删除mongoid文档以及相关文档

时间:2011-08-16 09:54:20

标签: 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

现在当我软删除用户时,我也想软删帖。我有什么方法可以做到这一点吗?

用于软删除我正在使用的文档Mongoid::Paranoia

2 个答案:

答案 0 :(得分:1)

为什么要删除用户帖子?如果我正在关注一些线程(我假设帖子是线程的),并且一些用户在线程中写了一些帖子,删除了他的个人资料,我不希望他的帖子被删除。这会打破后线程的流程。

我知道这不能解答您的问题,但如果您确实需要删除帖子,则可能会考虑这个问题。

答案 1 :(得分:0)

before_destroy回调会做你需要的吗? 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