Я новичок, прорабатывая учебник Hartl по Rails 5, когда натолкнулся на этот запутанный код, перечисленный ниже.Похоже, что @current_user определяется внутри метода как переменная экземпляра, поэтому его можно использовать вне метода.Тем не менее, в logged_in?метод, символ @ не требуется для вызова.На самом деле, если я добавлю rewrite logged_in?чтобы использовать @current_user, он больше не работает как положено!
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
if session[:user_id]
@current_user ||= User.find_by(id: session[:user_id])
end
end
# Returns true if the user is logged in, false otherwise.
def logged_in?
!current_user.nil?
end
end
Когда я пытаюсь сделать это в ruby, я не могу использовать переменную экземпляра таким образом.Пример, который я попробовал, ниже.Когда я вызываю method2, я получаю ошибку, которая не исправлена, пока я не добавлю символ @ перед var1.Может ли кто-нибудь помочь мне понять это?Спасибо !!
def method1
@var1 = 2
@var1
end
def method2
@var1 == 2
end
puts method1
puts method2