一般的に、ヘルパーはコントローラではアクセスできません。しかし、なぜインスタンス変数@current_userを囲んでいるのでしょうか?解説が必要なのはなぜですか? Ruby on Railsチュートリアル9章9.3.3 current-user -
なぜ「current_user =」と「current_user」がメソッドとして定義されていますか? @current_userがこのセクションに必要なすべてのものになるのはなぜですか?
一般的に、ヘルパーはコントローラではアクセスできません。しかし、なぜインスタンス変数@current_userを囲んでいるのでしょうか?解説が必要なのはなぜですか? Ruby on Railsチュートリアル9章9.3.3 current-user -
なぜ「current_user =」と「current_user」がメソッドとして定義されていますか? @current_userがこのセクションに必要なすべてのものになるのはなぜですか?
あなたは読書を続ける必要があると思います。
これを実行すると、セクション4.4.5で最初に見られたattr_accessorの機能を効果的に複製し、セクション7.1.1.8で仮想パスワード属性を作成しました。問題はまったく問題ですリスト9.15のコードでは、ユーザーのサインイン状況が忘れられます。つまり、ユーザーが別のページに行くとすぐに、セッションは終了し、ユーザーは自動的にログアウトされます。
この問題を回避するために、我々はクッキーを対応するセッションのユーザーを見つけることができます...
私は同僚から良い答えを手に入れました。
module SessionsHelper
def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
self.current_user = user
end
end
def current_user
@current_user ||= user_from_remember_token
end
リファクタリングの問題です。現在のユーザーのどこからでもコードを複製する必要はありません。
私はまだcurrent_user=
メソッドが必要ではないと思います。私は代入のためにインスタンス変数を使用しない理由は見当たりません。
私は同じ質問があります。はい、私はcurrent_userがコード複製を防ぐためにこのように構成されていると思います。しかし、私はそれが構文の問題かもしれないと思う。 current_userのpublicプロパティをSessionHelper
というpublicプロパティにした場合は、SessionHelper.current_user
でアクセスしますが、current_user
メソッドとcurrent_user=(user)
メソッドを定義すると、余分なクラッタなしでcurrent_user
プロパティを使用できます。
だから、それは単なるスタイルの問題だと思います。あなたのアプローチもうまくいきます。
コードをお寄せいただきありがとうございます@ Mab879。まだサイトのハングアップを取得します。 – Terrabits