Sai*_*aim 6 activerecord global ruby-on-rails callback
我的RoR应用程序中有大约40个模型.我想为所有模型设置一个after_save回调.一种方法是将其添加到所有模型.由于此回调具有相同的运行代码,因此有一种方法可以全局定义它,以便为所有模型调用它.
我试了这个没有运气:
class ActiveRecord::Base
after_save :do_something
def do_something
# ....
end
end
Run Code Online (Sandbox Code Playgroud)
如果我在单个模型中执行相同的代码.
谢谢,伊姆兰
您应该使用观察者:
class AuditObserver < ActiveRecord::Observer
observe ActiveRecord::Base.send(:subclasses)
def after_save(record)
AuditTrail.new(record, "UPDATED")
end
end
Run Code Online (Sandbox Code Playgroud)
要激活观察者,请在config/application.rb文件的config.active_record.observers配置设置中列出它.
config.active_record.observers = :audit_observer
Run Code Online (Sandbox Code Playgroud)
注意
在Rails 4中,观察者特征从核心移除.使用https://github.com/rails/rails-observers gem.
归档时间: |
|
查看次数: |
2299 次 |
最近记录: |