我目前通过http://ruby.railstutorial.org/chapters/sign-in-sign-out#sec:current_use r] 1工作,我很难理解两个current_user方法之间的区别。在我的另一个方法sign_in中有一个调用self.current_user但我无法理解哪个current_user被调用,以及其他current_user方法实际上在做什么。帮助红宝石的方法同名
module SessionsHelper
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
self.current_user = user
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def signed_in?
!current_user.nil?
end
private
def user_from_remember_token
# using the * makes us pass two values [id,salt]
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil,nil]
end
end
如果我只是调用''current_user.nil?'',我甚至会需要'current_user ='方法吗?因为'current_user'方法没有检索用户,或者只是将'@ current_user'设置为零。 – Kevin 2011-03-21 04:56:42
@Kevin:如果将sign_in修改为分配给@current_user,那么您可以在该代码中删除current_user =方法。但是如果你想创建“模仿”用户的能力,你会发现current_user =很有用 - 你是以你身份登录的,但假装是别人。 (此功能可以帮助调试客户支持问题。) – btilly 2011-03-21 05:17:24