yutokyokutyo / rebuild_sample_app

https://railstutorial.jp/chapters/static_pages?version=5.0#cha-static_pages
https://rebuildsampleapp.herokuapp.com/
5 stars 0 forks source link

12章 #24

Closed yutokyokutyo closed 7 years ago

yutokyokutyo commented 7 years ago

オーバービュー

img_4691 img_7656

yutokyokutyo commented 7 years ago

4/27日見参!ぶったぎる!

yutokyokutyo commented 7 years ago

リスト 12.4: 新しいパスワード再設定画面ビュ

ビュになってる

yutokyokutyo commented 7 years ago

Listing 12.4: A new password reset view.

ビューだと思うので報告しておこう!

yutokyokutyo commented 7 years ago

なので、ビューを描画するため 先程説明したように今回はビューも扱うので

もしやViewを ビュ と表現する人なのかなと思ったけど他の箇所では上記のように ビュー と表現していたので間違いない!

yutokyokutyo commented 7 years ago

https://twitter.com/yutokyokutyo/status/857432998219628546 DONE!

yutokyokutyo commented 7 years ago

試しに有効なメールアドレスをフォームから送信してみましょう (図 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>
yutokyokutyo commented 7 years ago

次回 12.2 パスワード再設定のメール送信 から

yutokyokutyo commented 7 years ago

Railsのプレビュー機能を使って、ブラウザから先ほどのメールを表示してみてください。「Date」の欄にはどんな内容が表示されているでしょうか?

Date: Fri, 28 Apr 2017 00:48:11 +0000

yutokyokutyo commented 7 years ago

パスワード再設定フォームから有効なメールアドレスを送信してみましょう。また、Railsサーバーのログを見て、生成された送信メールの内容を確認してみてください

確認した!秘匿情報あるので記載はなし。

yutokyokutyo commented 7 years ago

コンソールに移り、先ほどの演習課題でパスワード再設定をしたUserオブジェクトを探してください。オブジェクトを見つけたら、そのオブジェクトが持つreset_digestとreset_sent_atの値を確認してみましょう。

みた!

yutokyokutyo commented 7 years ago
  1. この時点で、テストスイートが greenになっていることを確認してみましょう。

👀 ed

  1. リスト 11.20で使ったCGI.escapeの部分を削除すると、テストが redに変わることを確認してみましょう。
% 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

でしょうね!

yutokyokutyo commented 7 years ago

300%理解!! 💪

yutokyokutyo commented 7 years ago

12.2.1.1で示した手順に従って、Railsサーバーのログから送信メールを探し出し、そこに記されているリンクを見つけてください。そのリンクをブラウザから表示してみて、図 12.11のように表示されるか確かめてみましょう。

image

先ほど表示したページから、実際に新しいパスワードを送信してみましょう。どのような結果になるでしょうか?

image

これが Rails Tutorial のお膳立てか!

yutokyokutyo commented 7 years ago

次は12.3.2 パスワードを更新するから

yutokyokutyo commented 7 years ago

12.2.1.1で得られたリンク (Railsサーバーのログから取得) をブラウザで表示し、passwordとconfirmationの文字列をわざと間違えて送信してみましょう。どんなエラーメッセージが表示されるでしょうか? コンソールに移り、パスワード再設定を送信したユーザーオブジェクトを見つけてください。見つかったら、そのオブジェクトのpassword_digestの値を取得してみましょう。次に、パスワード再設定フォームから有効なパスワードを入力し、送信してみましょう (図 12.13)。パスワードの再設定は成功したら、再度password_digestの値を取得し、先ほど取得した値と異なっていることを確認してみましょう。ヒント: 新しい値はuser.reloadを通して取得する必要があります。

あれ。値が同じになってるなぁ。

yutokyokutyo commented 7 years ago

image

もうパスワードが設定済みということだった。

yutokyokutyo commented 7 years ago

。次に、パスワード再設定フォームから有効なパスワードを入力し、送信してみましょう (図 12.13)。パスワードの再設定は成功したら、再度password_digestの値を取得し、先ほど取得した値と異なっていることを確認してみましょう。ヒント: 新しい値はuser.reloadを通して取得する必要があります。

確認できた!おk!

yutokyokutyo commented 7 years ago

完!