4.4 セッション
セッションを取得する
セッションはビューおよびコントローラで使用することができます。セッションはsession
メソッドを利用することで取得できます。
以下の例ではセッションに:current_user_id
というキーで保存しているユーザーIDを元に現在ログインしているユーザーを探すメソッドになります。
class ApplicationController < ActionController::Base
def current_user
User.find_by(id: session[:current_user_id])
end
end
セッションにデータを保存する
セッションにデータを格納するにはsession
メソッドにシンボルのキーを指定し値を代入します。
以下の例ではログインが成功したら、セッションにログインしたユーザーIDを保存しています。
class SessionsController < ApplicationController
def create
@user = User.find_by(email: params[:email])
if @user.password == params[:password]
session[:current_user_id] = @user.id
redirect_to mypage_path
else
redirect_to root_path
end
end
end
セッションからデータを削除する
セッションからデータを削除するにはsession
メソッドで指定のキーにnil
を代入します。
以下の例ではsession
の:current_user_id
にnil
を代入することでログアウトを実現しています。
class SessionsController < ApplicationController
def destroy
session[:current_user_id] = nil
redirect_to root_path
end
end