我希望的行为是,当在一个实例上调用destroy时,该实例实际上不会被销毁,但它只会被标记为已被销毁。这需要渗透任何模型关联。
在我不想实际销毁的模型中,只是将它们标记为已删除,我有一个deactivated
字段。
从我能说的< v3.0.0这样做的方法是覆盖destroy_without_callbacks
(这就是ActsAsParanoid的方式),但是3.0.0中不再存在该方法,而且我对重写私有方法并不感到兴奋。
我也尝试过实现回调,但根据docs,回调中的任何更改都是事务的一部分,因此也会回滚。
我的回调如下:
after_destroy :mark_deactivated
def mark_deactivated
if self.respond_to?(:deactivated) then
self.deactivated = DateTime.now
self.save
false
else
true
end
end
如何在不停止回调和回滚更改的情况下阻止实际销毁记录?