質問: railsで以下のcurrent_userメソッドの質問です。 helper method def current_user @current_user ||= user.find(session[:user_id]) if session[:user_id] end 上のメソッドでは、@current_userがnilの場合、sessionのuser_idからUserを取り出して@current_userに代入するというところまではわかりますが、railsではHTTPリクエスト毎にインスタンス変数がリセットされるのに、なぜ次のリクエストから@current_userに代入された値は残ったままなのでしょうか? 質問の仕方がヘタクソかもしれませんが、ご教授いただければ幸いです。
回答: > > railsではHTTPリクエスト毎にインスタンス変数がリセットされるのに、なぜ次のリクエストから@current_userに代入された値は残ったままなのでしょうか? > > > 残りません。リクエストのたびに毎回`User.find_by`が実行されます。 `@current_user`に値を入れているのは、**同じリクエスト**の中で複数回DBを呼ぶのを避けるためです。