Michael Hartl によるRuby on Rails チュートリアルを終了しました。インスタンス変数、ゲッター、セッターに関するいくつかの基本的な考え方を知っています。
sign_in メソッドはこちら
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
end
今、私はこの行で立ち往生しています
self.current_user = user
この関連する質問を見つけましたが、まだわかりません。
sign_in 後、ユーザーは別のページにリダイレクトされるため、@current_user
nil になります。@current_user
Rails は、現在のリクエストで Cookie またはセッションを再度チェックする必要がないように、Cookie またはセッションから current_user を取得してから を設定することしかできません。
Sign_out メソッドで
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
self.current_user = nil
同じ理由で、ユーザーは root_url にリダイレクトされるので、なぜ必要なのですか?
ゲッターとセッターのコードは次のとおりです
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end