ruby-on-rails – 所有模型的ActiveRecord全局回调
发布时间:2020-12-16 21:19:58 所属栏目:百科 来源:网络整理
导读:我的RoR应用程序中有大约40个模型.我想为所有模型设置一个after_save回调.一种方法是将其添加到所有模型.由于此回调具有相同的运行代码,因此有一种方法可以全局定义它,以便为所有模型调用它. 我试了这个没有运气: class ActiveRecord::Base after_save :do_
我的RoR应用程序中有大约40个模型.我想为所有模型设置一个after_save回调.一种方法是将其添加到所有模型.由于此回调具有相同的运行代码,因此有一种方法可以全局定义它,以便为所有模型调用它.
我试了这个没有运气: class ActiveRecord::Base after_save :do_something def do_something # .... end end 如果我在单个模型中执行相同的代码. 谢谢, 解决方法
您应该使用观察者:
class AuditObserver < ActiveRecord::Observer observe ActiveRecord::Base.send(:subclasses) def after_save(record) AuditTrail.new(record,"UPDATED") end end 要激活观察者,请在config / application.rb文件的config.active_record.observers配置设置中列出它. config.active_record.observers = :audit_observer 注意 在Rails 4中,观察者特征从核心移除.使用https://github.com/rails/rails-observers宝石. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |