Search code examples
ruby-on-railsruby-on-rails-4ruby-on-rails-5ruby-on-rails-6

From Rails Tutorial Ch8 - why is instance variable not used?


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?


Solution

  • 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.