2

主なドキュメントでは、コールバックのデバッグ時に説明していますが、存在しないようです。

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
4

1 に答える 1

3

この方法はRails3ではなくなったようです。以前は次の方法を使用しました。

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で定義されているので、コントローラーなどで同様のことができると思います。

于 2011-03-25T02:43:24.690 に答える