我目前通過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