【发布时间】:2013-09-18 01:31:10
【问题描述】:
我正在尝试在 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
【问题讨论】:
-
您找到解决方案了吗?
-
@BenediktB,这是我们的最新版本:gist.github.com/mockdeep/7574103
标签: ruby-on-rails activesupport