【问题标题】:How do I use after_save_callback_chain?如何使用 after_save 回调链?
【发布时间】:2011-03-21 22:43:27
【问题描述】:

主要文档在调试回调时对其进行了描述,但似乎不存在:

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

【问题讨论】:

    标签: ruby-on-rails-3 activesupport


    【解决方案1】:

    似乎这种方法在 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 上定义的,因此您可以使用控制器和我假设的东西做类似的事情。

    【讨论】:

    • 好东西,正在疯狂地试图找出回调顺序。这帮助很大。
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    相关资源
    最近更新 更多