当我遇到下面列出的这段令人困惑的代码时,我是一名新手,正在通过Hartl的Rails 5教程工作。看起来@current_user在方法内被定义为实例变量,因此可以在方法外使用。但是,在login_in?方法,不需要@符号来调用它。实际上,如果我添加重写login_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
当我遇到下面列出的这段令人困惑的代码时,我是一名新手,正在通过Hartl的Rails 5教程工作。看起来@current_user在方法中定义为实例...
current_user
被定义为方法,然后在该方法内部定义了实例变量@current_user
,仅在该方法内部使用。 logged_in?
方法正在调用current_user
方法,而不是直接访问@current_user
变量。请注意,在ruby中,@
,$
或@@
实际上是变量名的一部分,而不是修饰符