Ruby on Rails 特定のactionのみbefore_filterする

コントローラの全てのアクションに対して、before_filterをしたい場合はこう記述する。

 

この場合、index, new, create, … と、全てのアクションに対してフィルタ処理(my_method)が実行される。

 

特定のアクション、例えばnew, create, edit, update, destroyのみbefore_filterを処理させたい場合には、:onlyオプションを使用する。

:onlyオプションで指定したアクションにのみ、before_filterが適用されるようになる。

 

または、:onlyオプションではなく:exceptオプションを使用すると、逆にbefore_filterから除外したいアクションだけを指定することができる。

 

indexアクションとshowアクションだけは、before_filterから除外される。

:onlyアクションと:exceptアクションについての情報元

理想は、個人のブログ記事のような曖昧なところを参照しなくても、いつでも公式の情報を参照できるようになること。

 

RailsGuides Action Controller Overviewではskip_before_filterで:onlyが登場するが、詳しくは記載されていない。

 

AbstractController::Callbacks::ClassMethodsでは、_normalize_callback_options(options)メソッドの説明に、onlyとexceptが登場しているが、これを見ただけでは理解できないと思う。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=1365