我正在尝试理解这段代码
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
end
使用
行self.current_user = user
是否会为SessionsController类创建一个名为current_user的变量(上面的模块属于SessionsController类)?
如果我使用
@current_user = user
而不是上面的代码,代码似乎完全相同。怎么样?!
非常感谢你的时间。
答案 0 :(得分:0)
self.current_user = user
只需调用方法current_user=(user)
,该方法只执行@current_user = user
,因此只有@current_user = user
才能正常工作。
答案 1 :(得分:0)
self.current_user = user
,此表达式表示current_user
是类Sessions
中的方法(由模块SessionsHelper
混合)而不是局部变量。 self代表类Sessions
,因此这一行只是一个方法调用,与@current_user = user
或current_user=(user)
具有相同的效果。