每当 Activerecord 的 :after_save 回调触发时触发回调
Triggering a callback whenever Activerecord's :after_save callbacks trigger
我有以下代码,我想在 ActiveRecord 的 on_new_annoucement
触发时触发 FooClass 的回调。我已将回调数组设为模块的 class 变量,但它超出了 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
使用这种方法,您的代码只会随着时间的推移变得更加混乱。
考虑使用 Wisper Gem。它实现了事件侦听器模式并帮助您维护干净的代码。
我有以下代码,我想在 ActiveRecord 的 on_new_annoucement
触发时触发 FooClass 的回调。我已将回调数组设为模块的 class 变量,但它超出了 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
使用这种方法,您的代码只会随着时间的推移变得更加混乱。
考虑使用 Wisper Gem。它实现了事件侦听器模式并帮助您维护干净的代码。