Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Mongoid::偏执狂删除关联_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.2_Mongoid - Fatal编程技术网

Ruby on rails Mongoid::偏执狂删除关联

Ruby on rails Mongoid::偏执狂删除关联,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.2,mongoid,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.2,Mongoid,user.rb模型 class User include Mongoid::Document include Mongoid::Paranoia has_many :posts, dependent: :destroy, :autosave => true end post.rb模型 class Post include Mongoid::Document belongs_to :user field :title end 如果我在控制台中运行下一个命令: ir

user.rb模型

class User
  include Mongoid::Document
  include Mongoid::Paranoia
  has_many :posts, dependent: :destroy, :autosave => true
end
post.rb模型

class Post
  include Mongoid::Document
  belongs_to :user
  field :title
end
如果我在控制台中运行下一个命令:

irb(main):020:0> u = User.first
=> #object here
irb(main):021:0> u.delete
=> true
irb(main):022:0> u.posts
=> nil
如果我尝试调用用户帖子,我可以看到所有用户帖子都已被删除。如果用户使用
u.destroy
从我的数据库中永久销毁,我只想删除所有用户帖子

如果我使用
Mongoid::Paranoia
u.delete
删除一个对象,我如何将所有相关对象保留在数据库中。此对象可以稍后使用
u.restore

谢谢

您可以覆盖由
Mongoid::Paranoia
提供的
用户
,因此它忽略了
级联呼叫:

  def remove(options = {})
    # don't cascade the remove call
    # cascade!
    time = self.deleted_at = Time.now
    paranoid_collection.find(atomic_selector).
      update({ "$set" => { paranoid_field => time }})
    @destroyed = true
    IdentityMap.remove(self)
    Threaded.clear_options!
    true
  end
  alias :delete :remove
现在
u.delete
将保留所有相关帖子,并且
u.delete也将永久删除它们