[前][次][番号順一覧][スレッド一覧]

rails:1998

From: Kazuhiro Yoshida <moriq@m...>
Date: Tue, 06 Feb 2007 22:19:21 +0900
Subject: [rails:1998] Re: 継承時のbefore_filterの呼び出し順序について

moriqです。

山崎雄介 wrote:
> ユーザ管理画面の表示では、最大で2段階のbefore_filterが適用されるようになっ
> ています。ただし、ログインしていない状態では最初のsession_authに引っかか
> るので、かならずlogin画面に飛び、もうひとつが呼ばれることはないはずです。

filterメソッドでfalseを返さないと呼ばれてしまいます。
redirect_toで実行が止まるわけではなく、また戻り値はfalseではないので。

> class ApplicationController < ActionController::Base
>   before_filter :session_auth, :except => [:login, :auth, :logout]
>   
>   def session_auth
>     request_page = request.env['REQUEST_URI']
>     reset_expiration
>     session[:request] = request_page
>     unless session[:me]
>       self.class.logger.debug("session_auth_failure") # ここは呼ばれている。
>       flash[:notice] = 'ログインして下さい。'
>       redirect_to :action => 'login'
        false
>     else
>       @me = session[:me]
>     end
>   end
> end

> 下位クラスのbefore_filterが先に呼ばれているんじゃないでしょうか。

before_filter (append_before_filter) は先に定義したほうが先に呼ばれますね。
後で定義するけど先に呼びたいときはprepend_before_filterを使います。

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      1997 2007-02-06 13:24 [y-yamasaki@s...     ] 継承時のbefore_filterの呼び出し順序について
->    1998 2007-02-06 14:19 ┗[moriq@m...          ]                                       
      1999 2007-02-06 16:38  ┗[y-yamasaki@s...     ]