我如何使用after_save_callback_chain?

时间:2011-03-21 22:43:27

标签: ruby-on-rails-3 activesupport

主要文档在调试回调时描述它但似乎不存在:

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

我尝试使用就像示例一样,然后它返回我:

ruby-1.8.7-p330 :026 > Device.after_save_callback_chain
NoMethodError: undefined method `after_save_callback_chain' for #<Class:0x104bc1060>
    from /rvm/gems/ruby-1.8.7-p330/gems/activerecord-3.0.5/lib/active_record/base.rb:1008:in `method_missing'
    from (irb):26

1 个答案:

答案 0 :(得分:3)

似乎这种方法在Rails 3中已经消失了。我之前使用过以下内容:

Model._save_callbacks.select { |callback| callback.kind.eql?(:after) }

这将为您提供任何after_save回调。然后,您可以通过检查.filter属性来获取更多信息,例如调用的proc:

Model._save_callbacks.select { |callback| callback.kind.eql?(:after) }.collect(&:filter)

希望有人有比这更好的答案。

这个_#{kind}_callbacks方法是在ActiveSupport上定义的,我认为你可以用控制器做类似的事情,而不是我想的。