Ryan Bates Authenticationに関連するRailscastのいずれかを見ていると、sigin / signout機能を作成するときに繰り返し発生するテーマが表示されますが、それをもう少し明確に理解したいと思います。
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
たとえば、通常、セッションコントローラではsession[:user_id] = user.id
、変数userがアクティブレコードオブジェクトに設定されている場合など、作成アクションにはセッションハッシュへの割り当てが含まれます。
次に、上記のヘルパーメソッドをビュー全体で使用して、現在サインインしているユーザーを検索します。
ただし、サインアウトすると、破棄アクションには次の行のみが含まれますsession[:user_id] = nil
@current_user
サインインした前のユーザーに設定されるので、nilに設定する必要もありませんか?