Thursday, October 30, 2008

How to skip ActionController::Filters with block

before_filter :foo
def foo
...
end

メソッド名のシンボルを与えてフィルターを指定する場合、
skip_before_filter :foo

でスキップできるけど、
before_filter do |controller|
...
end

ブロックを使った場合スキップする方法がわからないので ActionController::Filters の実装を調べたら、
before_filter :identifier => :foo do |controller|
...
end

とすることで、
skip_before_filter :foo

できることがわかった。

:identifier オプションは ActiveSupport::Callbacks::Callback のアトリビュートなので、 ActionController::Filters の実装が ActiveSupport::Callbacks::Callback を使っていない 2.0.X 以前のバージョンでは使えないと思われるので注意。

No comments: