【问题标题】:Rails 3 Override Destroy without Canceling callbacks, and triggering a ROLLBACKRails 3 在不取消回调并触发 ROLLBACK 的情况下覆盖 Destroy
【发布时间】: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


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2011-07-18
      • 1970-01-01
      相关资源
      最近更新 更多