我正在尝试在 Rails 中滚动我自己的存档,但我无法弄清楚如何destroy
在覆盖旧方法之前对其进行别名。下面是我想做的,但我得到一个NoMethodError
因为destroy
在模块中之前没有定义。如果我把它放在一个模块中,它会按照我期望的方式工作InstanceMethods
,但这似乎已被弃用。我应该用香草模块来处理它还是有办法用它来做ActiveSupport::Concern
?
module Trashable
extend ActiveSupport::Concern
included do
default_scope where(deleted_at: nil)
end
module ClassMethods
def deleted
self.unscoped.where(self.arel_table[:deleted_at].not_eq(nil))
end
end
alias_method :destroy!, :destroy
def destroy
run_callbacks(:destroy) do
update_column(:deleted_at, Time.now)
end
end
end