[英]Why is the variable nil even if I don't set it to nil?
我不明白為什么從session
刪除user_id
后current_user
為零。 調用current_user
函數時,會不會再次返回舊的current_user
值?
#Returns the current logged-in user (if any).
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
# Logs out the current user.
def log_out
session.delete(:user_id)
# @current_user = nil
end
我假設這些方法是在控制器中定義的。 控制器實例變量的壽命只有一個HTTP請求。 會話值的使用時間更長,但是您已刪除了此處重要的會話值。
當下一個請求進入時,需要再次設置@current_user
,並且由於session[:user_id]
為nil,因此您實際上是在調用User.find_by(id: nil)
,它將返回nil。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.