Closed yutokyokutyo closed 7 years ago
4/27日見参!ぶったぎる!
リスト 12.4: 新しいパスワード再設定画面ビュ
ビュになってる
Listing 12.4: A new password reset view.
ビューだと思うので報告しておこう!
なので、ビューを描画するため 先程説明したように今回はビューも扱うので
もしやViewを ビュ
と表現する人なのかなと思ったけど他の箇所では上記のように ビュー
と表現していたので間違いない!
試しに有効なメールアドレスをフォームから送信してみましょう (図 12.6)。どんなエラーメッセージが表示されたでしょうか? コンソールに移り、先ほどの演習課題で送信した結果、(エラーと表示されてはいるものの) 該当するuserオブジェクトにはreset_digestとreset_sent_atがあることを確認してみましょう。また、それぞれの値はどのようになっていますか?
Email address not found
[3] pry(main)> user.find_by(email: 'example-3@railstutorial.org')
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."email" = ? LIMIT ? [["email", "example-3@railstutorial.org"], ["LIMIT", 1]]
=> #<User:0x007fe69751b6b8
id: 6,
name: "Gavin Dooley",
email: "example-3@railstutorial.org",
created_at: Wed, 19 Apr 2017 23:11:01 UTC +00:00,
updated_at: Wed, 26 Apr 2017 02:55:06 UTC +00:00,
password_digest: "$2a$10$BQmbR8Lk73lEJtteRrzg9OOqC4FRcjHU44o.uaug6yyaFrwiu.lZG",
remember_digest: nil,
admin: false,
activation_digest: "$2a$10$JDl08CUKalL9.bgK0ISo2eDAN8PntXIU.sIH22MYrTQSIeBZqdrVi",
activated: false,
activated_at: Wed, 19 Apr 2017 23:11:01 UTC +00:00,
reset_digest: nil,
reset_sent_at: nil>
次回 12.2 パスワード再設定のメール送信 から
Railsのプレビュー機能を使って、ブラウザから先ほどのメールを表示してみてください。「Date」の欄にはどんな内容が表示されているでしょうか?
Date: Fri, 28 Apr 2017 00:48:11 +0000
パスワード再設定フォームから有効なメールアドレスを送信してみましょう。また、Railsサーバーのログを見て、生成された送信メールの内容を確認してみてください
確認した!秘匿情報あるので記載はなし。
コンソールに移り、先ほどの演習課題でパスワード再設定をしたUserオブジェクトを探してください。オブジェクトを見つけたら、そのオブジェクトが持つreset_digestとreset_sent_atの値を確認してみましょう。
みた!
👀 ed
% rails t (git)-[password-resetl]
Running via Spring preloader in process 47763
Started with run options --seed 31251
FAIL["test_password_reset", UserMailerTest, 4.145560195000144]
test_password_reset#UserMailerTest (4.15s)
Expected /michael@example\.com/ to match # encoding: US-ASCII
"\r\n----==_mimepart_5902b62b1518d_ba933fcd6943fa142056\r\nContent-Type: text/plain;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\nTo reset your password click the link below:\r\n\r\nhttp://example.com/password_resets/edmrDLfz8OR5PaajeXH2FA/edit?email=michael%40example.com\r\n\r\nThis link will expire in two hours.\r\n\r\nIf you did not request your password to be reset, please ignore this email and\r\nyour password will stay as it is.\r\n\r\n\r\n----==_mimepart_5902b62b1518d_ba933fcd6943fa142056\r\nContent-Type: text/html;\r\n charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\n<!DOCTYPE html>\r\n<html>\r\n <head>\r\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n <style>\r\n /* Email styles need to be inline */\r\n </style>\r\n </head>\r\n\r\n <body>\r\n <h1>Password reset</h1>\r\n\r\n<p>To reset your password click the link below:</p>\r\n\r\n<a href=\"http://example.com/password_resets/edmrDLfz8OR5PaajeXH2FA/edit?email=michael%40example.com\">Reset password</a>\r\n\r\n<p>This link will expire in two hours.</p>\r\n\r\n<p>\r\nIf you did not request your password to be reset, please ignore this email and\r\nyour password will stay as it is.\r\n</p>\r\n\r\n </body>\r\n</html>\r\n\r\n----==_mimepart_5902b62b1518d_ba933fcd6943fa142056--\r\n".
test/mailers/user_mailer_test.rb:25:in `block in <class:UserMailerTest>'
45/45: [=======================================================================================================] 100% Time: 00:00:04, Time: 00:00:04
Finished in 4.26675s
45 tests, 200 assertions, 1 failures, 0 errors, 0 skips
でしょうね!
300%理解!! 💪
12.2.1.1で示した手順に従って、Railsサーバーのログから送信メールを探し出し、そこに記されているリンクを見つけてください。そのリンクをブラウザから表示してみて、図 12.11のように表示されるか確かめてみましょう。
先ほど表示したページから、実際に新しいパスワードを送信してみましょう。どのような結果になるでしょうか?
これが Rails Tutorial のお膳立てか!
次は12.3.2 パスワードを更新するから
12.2.1.1で得られたリンク (Railsサーバーのログから取得) をブラウザで表示し、passwordとconfirmationの文字列をわざと間違えて送信してみましょう。どんなエラーメッセージが表示されるでしょうか? コンソールに移り、パスワード再設定を送信したユーザーオブジェクトを見つけてください。見つかったら、そのオブジェクトのpassword_digestの値を取得してみましょう。次に、パスワード再設定フォームから有効なパスワードを入力し、送信してみましょう (図 12.13)。パスワードの再設定は成功したら、再度password_digestの値を取得し、先ほど取得した値と異なっていることを確認してみましょう。ヒント: 新しい値はuser.reloadを通して取得する必要があります。
あれ。値が同じになってるなぁ。
もうパスワードが設定済みということだった。
。次に、パスワード再設定フォームから有効なパスワードを入力し、送信してみましょう (図 12.13)。パスワードの再設定は成功したら、再度password_digestの値を取得し、先ほど取得した値と異なっていることを確認してみましょう。ヒント: 新しい値はuser.reloadを通して取得する必要があります。
確認できた!おk!
完!
オーバービュー