每当Activerecord的:after_save回调触发时触发回调

时间:2015-05-06 13:58:38

标签: ruby activerecord callback scope

我有以下代码,我想在ActiveRecord的on_new_annoucement触发时触发FooClass的回调。我已经使回调数组成为模块的类变量,但它超出了Activerecord的回调范围。

module FooModule
    class FooClass
        attr_reader :callbacks
        def initialize
            @@callbacks = Hash.new { |h, k| h[k] = [] }
        end

        def on_new_announcement(&block)
             @@callbacks[:on_new_announcement] << block
        end
     end

     class Announcement < ActiveRecord::Base
          after_save :on_new_announcement
          def on_new_announcement 
              ....
          end
     end
 end

1 个答案:

答案 0 :(得分:3)

使用这种方法,您的代码只会变得更加混乱。

考虑使用Wisper Gem。它实现了事件监听器模式,并帮助您维护干净的代码。