0
私はRoRの程度マイケル・ハートルのチュートリアルを読んでいる、第8章では、私はこれらのメソッドを書いた:章8.2 - @current_userまたはCURRENT_USER
module SessionsHelper
def login(user)
session[:user_id] = user.id
end
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
def logged_in?
!current_user.nil?
end
end
このコードは正常に動作します。私はcurrent_user
方法を取り除くことを試み、そして次にコードを変更:
module SessionsHelper
def login(user)
session[:user_id] = user.id
@current_user = User.find_by(id: session[:user_id])
end
def logged_in?
!(@current_user.nil?)
end
end
私はlogged_in?
を呼び出すと、それは常にfalse
を返します。 @current_user
にアクセスするためにcurrent_user
メソッドに電話する必要があるのはなぜですか? @current_user
は、この変数がインスタンス変数であるため、このモジュールのすべてのメソッドで使用できます。
ログインメソッドの@current_user = User.find_by(id:session [:user_id])を割り当てました –
'logged_in? 'を呼び出す前に' login'は常に呼び出されていますか? – sawa
いいえ、そうではありません。私は@current_userがインスタンス変数であるため、@current_userを利用できると思っていました。 –