ぞえの技術めも

Ruby on Rails勉強中

【51日目】【1日20分のRailsチュートリアル】【第6章】第6章のコミットと演習の1.

Ruby on Railsチュートリアル(第3版)

今日は「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できました。

f:id:kt_zoe:20161013123931p:plain

本番環境にも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.から。