Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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 Rails 3在不取消回调和触发回滚的情况下覆盖Destroy_Ruby On Rails_Activerecord_Ruby On Rails 3_Before Filter - Fatal编程技术网

Ruby on rails Rails 3在不取消回调和触发回滚的情况下覆盖Destroy

Ruby on rails Rails 3在不取消回调和触发回滚的情况下覆盖Destroy,ruby-on-rails,activerecord,ruby-on-rails-3,before-filter,Ruby On Rails,Activerecord,Ruby On Rails 3,Before Filter,我想要的行为是,当对一个实例调用destroy时,该实例实际上不会被销毁,但它只会被标记为已被销毁。这需要对任何模型关联进行过滤 在我不想实际销毁的模型中,只要将它们标记为已删除,我就有一个停用的字段 据我所知,

我想要的行为是,当对一个实例调用destroy时,该实例实际上不会被销毁,但它只会被标记为已被销毁。这需要对任何模型关联进行过滤

在我不想实际销毁的模型中,只要将它们标记为已删除,我就有一个
停用的
字段

据我所知,destroy\u而不回调(ActsAsParanoid就是这样做的),但是3.0.0中不再存在这种方法,而且我对重写私有方法不感兴趣

我也尝试过实现回调,但根据协议,回调中所做的任何更改都是事务的一部分,因此也会回滚

我的回调如下所示:

  after_destroy :mark_deactivated

  def mark_deactivated
    if self.respond_to?(:deactivated) then
      self.deactivated = DateTime.now
      self.save
      false
    else
      true
    end
  end
如何在不停止回调和回滚更改的情况下防止实际销毁记录?

查看此gem: