before_filterで実行したメソッドがfalseをreturnしたらどうなるか、気になったのでメモ。
確認した環境はRuby 1.9.3p194, Rails 3.2.8。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
true/falseだからといって特に何も起こらなかった。falseでもそのまま次のbefore_filterが実行されたり、filter後に控えているコントローラのメソッドが実行された。
before_filterやafter_filterはメソッドを優先して実行するかどうかを決めているだけであり、メソッドの返り値を受け取ってどうこうするというモノではないようだ。
ただし、before_filterで呼んだメソッドの中にrenderやredirect_to、raiseなどがあると、その後に控えている他のbefore_filterや以降のコントローラのメソッドは実行されない。
なお、rails:3168によると、rails 1.xではfilterにfalseが返ると、そこで処理が止まっていたようです。