【发布时间】:2010-10-30 18:38:06
【问题描述】:
我希望的行为是,当对实例调用destroy 时,该实例实际上不会被销毁,而只会被标记为已被销毁。这需要渗透到任何模型关联中。
在我不想实际销毁但将它们标记为已删除的模型中,我有一个 deactivated 字段。
据我所知,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
如何在不停止回调和回滚更改的情况下防止我的记录被实际销毁?
【问题讨论】:
标签: ruby-on-rails activerecord ruby-on-rails-3 before-filter