次のような http パラメータにApplicationController
一致するユーザー オブジェクトを取得するために、_before_filter_ を使用しようとしています。user_id
before_filter :fetch_user
def fetch_user
if params[:user_id].present?
@user = User.find(params[:user_id])
end
rescue ActiveRecord::RecordNotFound
# user not found
end
これは、何らかの方法で設定されているように見えるUsersControllerApplicationController
と呼ばれるコントローラーを除いて、継承するすべてのコントローラーで機能します。@user
nil
この動作の理由は何ですか? そして、これは標準的な動作ですか?それを回避/無効にする方法は?
アップデート:
私は常にuser_id
コントローラーに呼び出されるパラメーターを渡します。exact same before filter
UsersController に直接インクルードすると、動作します! UsersController には他に前のフィルタはありません
更新 2:
ユーザーコントローラーに使用されるルート
match ':user_id' => 'users#show'
ユーザーコントローラーコード:
def show
if @user
render :text => "user not nil"
else
render :text => "user nil"
end
end
user_id パラメーターで渡された ID を持つユーザーは確実に存在します。
ご協力いただきありがとうございます!