callback一覧
Railsのcallbackといえばbefore_action
(before_filter
)等を思い浮かべると思うが、
以下の9つが利用可能らしい
-
before_action
(before_filter
) -
around_action
(around_filter
) -
after_action
(after_filter
) -
prepend_before_action
(prepend_before_filter
) -
prepend_around_action
(prepend_around_filter
) -
prepend_after_action
(prepend_after_filter
) -
append_before_action
(append_before_filter
) -
append_around_action
(append_around_filter
) -
append_after_action
(append_after_filter
)
検証
検証はこちらのリポジトリで行った
コード(概要)
before_action :before
around_action :around
after_action :after
append_before_action :append_before
append_around_action :append_around
append_after_action :append_after
prepend_before_action :prepend_before
prepend_around_action :prepend_around
prepend_after_action :prepend_after
def callback_method
@array ||= []
@array << method_name
end
結果
@array == %w(prepend_around prepend_before before around append_before append_around append_after after prepend_after)
考察
before
,around
,after
は別々に管理されているのかと思っていたが、
process_action
というcallbackで同列に管理されているようだ
実際にコードを覗いてみると、AbstractController::Callbacks
で定義されているようだ
参考
検証用リポジトリ
AbstractController::Callbacks
ActiveSupport::Callbacks