如何为gem的模型添加回调?

时间:2016-05-22 10:46:30

标签: ruby-on-rails callback rails-engines

我有自己的应用程序。我用了一些宝石。例如,这个gem有用户模型。

如何为User模型添加我的自定义回调(after_save)(在没有和在此模型的回调中为gem定义)?

2 个答案:

答案 0 :(得分:0)

您可以使用初始化程序执行此操作,对gem中的User类进行猴子修补:

# config/initializers/some_gem.rb
module SomeGem
  class User
    after_save :my_callback

    private
    def my_callback
      ...
    end
  end
end

答案 1 :(得分:0)

您可以通过在this answer中描述的初始化程序中对User类进行猴子修补来实现此目的。

或者,您可以使用rails-observers gem将您的逻辑保持在第三方类之外:

  

Observer类响应生命周期回调以在原始类之外实现类似触发器的行为。这是一种很好的方法,可以减少模型类承担与类的核心职责无关的功能时通常会出现的混乱