質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

431閲覧

アカウントの有効化について【Railsチュートリアル】

SyunKi777

総合スコア11

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2022/03/17 11:59

編集2022/03/18 03:32

アカウントの有効化について【Railsチュートリアル】

Railsチュートリアルの「11.3.1 authenticated?メソッドの抽象化」の中でのご質問です。

authenticated?メソッドの第一引数に:rememberがございます。
:remember_token:remember_digestはDBやattr_accessor で作られたものだと分かるのですが、
:rememberはいつどこで生成されたものなのでしょうか?

ご回答いただけると幸いです。
よろしくお願いいたします。

ruby

1 # 現在ログイン中のユーザーを返す(いる場合) 2 def current_user 3 if (user_id = session[:user_id]) 4 @current_user ||= User.find_by(id: user_id) 5 elsif (user_id = cookies.signed[:user_id]) 6 user = User.find_by(id: user_id) 7 if user && user.authenticated?(:remember, cookies[:remember_token]) 8 log_in user 9 @current_user = user 10 end 11 end 12 end

備考

バージョンは6を使用しております。
ただ、バージョン5でも同じものがあり、かつバージョン6だと課金者しか閲覧できないので、
バージョン5のURLも併せて添付しておきます。

Rails6チュートリアル
https://railstutorial.jp/chapters/account_activation?version=6.0#sec-generalizing_the_authenticated_method

Rails5チュートリアル
https://railstutorial.jp/chapters/account_activation?version=5.1#sec-generalizing_the_authenticated_method

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/03/17 22:54

>Railsチュートリアル バージョンは6で良いですか? 可能ならURLを。
SyunKi777

2022/03/18 03:22

m.ts10806さん ありがとうございます。 バージョンは6です。 ただ、バージョン5でも同じものがあり、かつバージョン6だと課金者しか閲覧できないので、 バージョン5のURLも併せて添付しておきます。 Rails6チュートリアル https://railstutorial.jp/chapters/account_activation?version=6.0#sec-generalizing_the_authenticated_method Rails5チュートリアル https://railstutorial.jp/chapters/account_activation?version=5.1#sec-generalizing_the_authenticated_method
m.ts10806

2022/03/18 03:25

こちらはあくまでコメント欄なので質問本文を編集して質問本文に提示してください。
guest

回答1

0

ベストアンサー

見てみました。
ここにメソッドに定義があります。

ruby

1def authenticated?(attribute, token) 2 digest = send("#{attribute}_digest") 3 return false if digest.nil? 4 BCrypt::Password.new(digest).is_password?(token) 5end

user.authenticated?(:remember, cookies[:remember_token])を実行すると、
send("#{attribute}_digest")のところで、user.remember_digestが実行されます。

ruby

1send("#{attribute}_digest") 2self.send("remember_digest") # わかりやすく書く 3self.remember_digest # さらにわかりやすく書く

user.remember_digestは、remember_digestはDBのカラムかな?

これって回答になっていますか?

投稿2022/03/19 00:14

編集2022/03/19 00:18
thesnowman

総合スコア154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SyunKi777

2022/03/22 11:01

ご回答ありがとうございます。 ご提示いただいた処理を失念していました。 ご助力いただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問