0

これは、すべてのコントローラーとビューのどこにでもありました。

if current_user
    transaction
end

current_user を使用した if ステートメントは、おそらく 100 個までです。

だから私はこれを以下に追加しました application_controller 次に、すべてを置き換えましcurrent_user@current_user

before_filter :current_user_set

def current_user_set
    if current_user
        @current_user = current_user
    end
end

ただし、変化はないようです:(速度が向上しませんでした。なぜですか?

4

1 に答える 1

1

現在のユーザー情報を取得したら、データベースからプルするのではなく、セッションに入れます。これは、あなたがしているように聞こえます。問題を誤解している場合は修正してください。したがって、ユーザーがわかった後:

session[:user] = @user

セッションがデータベースにある場合、ユーザー情報は Cookie でブラウザーに送信されないため、これは問題ありません。そうでない場合は、ユーザー オブジェクト ID を Cookie に入れるか、user_id または email フィールドに入れることができますが、それはあなたがアプリケーションでユーザーオブジェクト全体が必要になるたびに、user_idまたは電子メールでユーザーを取得する必要があり、さらにSQL ...

application_controller で、ユーザーのセッションを参照します

def current_user
    session[:user]
end

他のチェックを行って、ユーザーがログインしているか存在しているかなどを確認できます...

これが役に立てば幸いです。あなたの質問は明確ではありません。

于 2013-07-20T03:52:39.577 に答える