【51日目】【1日20分のRailsチュートリアル】【第6章】第6章のコミットと演習の1.
今日は「6.4 最後に」から。
6.4 最後に
Gitを使用している方は、しばらくコミットしていなかったのであれば、この時点でコミットしておくのがよいでしょう。
コミットしてないのでコミットします。
$ bundle exec rake test 18 tests, 37 assertions, 0 failures, 0 errors, 0 skips $ git add -A $ git commit -m "Make a basic User model (including secure passwords)"
コミット完了。
masterブランチにマージしてリモートリポジトリにpush。
$ git checkout master $ git merge modeling-users $ git push
pushできました。
本番環境にもpushしておく。
$ bundle exec rake test
$ git push heroku
$ heroku run rake db:migrate
意図通りになっているかの確認はコンソールを使ってUser追加してみる。
$ heroku run console --sandbox >> User.create(name: "Michael Hartl", email: "michael@example.com", password: "foobar", password_confirmation: "foobar") => #<User id: 1, name: "Michael Hartl", email: "michael@example.com", created_at: "2016-10-13 02:21:10", updated_at: "2016-10-13 02:21:10", password_digest: "$2a$10$ZySR/Xqk2hlUz/pjY9/q.eky6ZUntlHgpXTjBgsZSYv...">
パスワードもハッシュ化されてるし、問題なさそう。
6.4.1 本章のまとめ
データベースを使ってユーザー登録の実現方法を学習しました。
・has_secure_passwordメソッドを使うことで、モデルに対してセキュアなパスワードを追加することができる
これ便利だわ…。
6.5 演習
演習とチュートリアル本編の食い違いを避ける方法については、3.6のトピックブランチの演習に追加したメモをご覧ください。
演習用にブランチ切ります。
$ git checkout modeling-users $ git checkout -b modeling-users-exercises
1.リスト6.31の、メールアドレスを小文字に変換するコードに対するテストを、リスト6.41に示されているように作成してください。 このテストでは、reloadメソッドを使用してデータベースから値を再度読み込み、assert_equalメソッドを使用して同値であるかどうかをテストしてください。 リスト6.41のテストが正しいかどうか検証するために、before_saveの行をコメントアウトするとテストが失敗し、元に戻すと成功することを確認してください。
リスト6.41のテストを追加。
test/models/user_test.rb
test "email addresses should be saved as lower-case" do mixed_case_email = "Foo@ExAMPle.CoM" @user.email = mixed_case_email @user.save assert_equal mixed_case_email.downcase, @user.reload.email end
テスト実行して通ることを確認。
$ bundle exec rake test 19 tests, 38 assertions, 0 failures, 0 errors, 0 skips
before_saveの行をコメントアウトする。
app/models/user.rb
# before_save { self.email = email.downcase }
テスト実行して失敗することを確認。
$ bundle exec rake test 19 tests, 38 assertions, 1 failures, 0 errors, 0 skips
確認できたのでbefore_saveの行のコメントアウトは戻しておく。
今日の作業時間は【21分】。
次は「6.5 演習」の2.から。