簡體   English   中英

為什么即使我不將其設置為nil,變量也為nil?

[英]Why is the variable nil even if I don't set it to nil?

我不明白為什么從session刪除user_idcurrent_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM