module SessionsHelper
# Logs in the given user.
def log_in(user)
session[:user_id] = user.id
end
# Returns the current logged-in user (if any).
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
# Returns true if the user is logged in, false otherwise.
def logged_in?
!current_user.nil?
end
end
Currently working through Hartl's Rails Tutorial in Ch 8 where he gets you to write code for users to log in and stay logged in.
Under method logged_in?, why is local variable current_user
used instead of @current_user
?
current_user
is not a local variable, it's an instance method.
why is instance variable not used?
It is being used.
When you call current_user
method it returns an instance variable @current_user
, which happens to be either a User object or nil
.