我從Michael Hartl的教程學習Rails,但是我對SessionsHelper模塊感到非常困惑。沒有提供有關current_user
方法重複的足夠信息。有人可以解釋爲什麼有兩個,他們的目的是什麼?關於SessionsHelper的混淆,特別是current_user方法?
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
我明白sign_in
方法將觸發調用current_user=(user)
但爲什麼再次current_user
方法?我明白第二種方法從數據庫獲取基於remember_token
的用戶,但我無法連接關於這些的點。
所以CURRENT_USER方法僅返回@current_user變量這就是從DB拉?你也可以解釋一下sign_in方法中的自我方法是什麼?我認爲自我只在模型中用來指代從數據庫中提取的記錄。 –
'self.'告訴ruby在類的實例上使用'current_user ='方法,而不是創建一個名爲'current_user'的新局部變量,並將'user'賦給它只是爲了讓它超出範圍。 – Aaron
@Aaron好解釋:) +1。 –