Ruby / Rails

ログイン機能の@current_user ||= User.find_by(id: session[:user_id])について

2019年8月17日

こんにちは、Nanayakuです。

今回は、ログイン機能で使用される↓のcurrent_userメソッドについて解説しようと思います。

def current_user

@current_user ||= User.find_by(id: session[:user_id])

end

current_userメソッド内の処理について1つ1つ解説していきます。

||=」は、代入演算子で「左辺がFalse(nilまたは偽)の場合に右辺の値を左辺に代入」と言う意味になります。

 

「User.find_by(id: 〇〇)」はUserモデルに保存されている〇〇のidを検索し、その情報を取得すると言う意味です。

 

「session[:user_id]」は、ログイン中のユーザーのidを取得しています。

 

これらを合わせると、以下の意味になります。

User.find_by(id: session[:user_id])

Userモデル内にあるログイン中のユーザーのid(user.id)と一致するidの情報を所得する

 

current_userメソッドの意味は、以下のようになります。

@current_user ||= User.find_by(id: session[:user_id])

インスタンス変数の「@current_user」がFalse(nil)の場合、Userモデルから現在ログインしているユーザーidと一致する情報を代入する

 

メモ

ログインしているかどうかは、下記の「logged_in?メソッド」で判断します。

def logged_in?

!current_user.nil?

end

この意味は、current_userがnil(空)かどうかを判断しています。

つまり、current_userメソッド内にある@current_user(インスタンス変数)内に情報があればログイン、なければログアウト状態となります。

-Ruby / Rails
-

© 2024 Nanayaku blog Powered by AFFINGER5