Ruby on rails Rails 3在不取消回调和触发回滚的情况下覆盖Destroy
我想要的行为是,当对一个实例调用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\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: