ruby-on-rails – 所有模型的ActiveRecord全局回调

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 所有模型的ActiveRecord全局回调前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的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宝石.

猜你在找的Ruby相关文章