#Rubyで特定の子コントローラだけで無効化したい
個人用メモ
親コントローラー設定したフィルターを、子コントローラーでは無効化したい時の書き方
skip_before_filter / skip_after_filter を使うのが一般的なようです
##特定のフィルターのみ無効化
###skip_before_filterのonlyで指定
- 親コントローラー
class ApplicationController < ActionController::Base
before_filter :test_filter
private
def test1 # test_filterが実行される
…
end
end
- 子コントローラー
オプションでonlyを指定しているので、test2だけ無効化される
class ChildController < ApplicationController
skip_before_filter :test_filter,
:only => :test2
def test2 # test_filterが実行されない
…
end
def test3 # test_filterが実行される
…
end
end
##特定のフィルター以外を無効化
###skip_before_filterのexceptで指定
class ChildController < ApplicationController
skip_before_filter :test_filter,
:except => :test2
def test2 # test_filterが実行される
…
end
def test3 # test_filterが実行されない
…
end
def test4 # test_filterが実行されない
…
end
end
備考
###after_filterの場合
skip_after_filter で skip_before_filterと同じようにすればOK