before_destroy停止但也更新模型的回调?

时间:2012-06-08 15:24:31

标签: ruby-on-rails ruby ruby-on-rails-3

我正在使用回调来暂停销毁操作,而是想设置:archived_at字段。问题是,我的before_destroy中的“return false”导致回滚消除了我的更新。解决这个问题?

class MarkArchived
  def before_destroy(model)
    update_attribute(:archived_at, Time.now) and return false
  end
end

class User < ActiveRecord::Base
  before_destroy MarkArchived
end

class Account < ActiveRecord::Base
  before_destroy MarkArchived
end

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你想要一些你的对象(或某些类对象)被存档,永远不会被销毁?我认为this gem可能适合您的使用

答案 1 :(得分:0)

这样的东西?

def hide_or_destroy
  if shifts.any?
    update(hidden: true)
  else
    destroy
  end
end