【143日目】【1日20分のRailsチュートリアル】【第10章】演習の3.と期限切れの比較の証明
今日は「10.5 演習」の3.から。
10.5 演習
3.リスト10.42では、activateメソッドとcreate_reset_digestメソッドの両方でupdate_attributeを呼び出しており、それぞれのアクセスによってデータベーストランザクションが個別に発生してしまう点が残念です。
リスト10.59のテンプレートに記入することで、個別のupdate_attribute呼び出しを単一のupdate_columns呼び出しに統合し、データベースアクセスが1回で済むようにしてください。
変更後にテストを実行し、GREENになることを確認してください。
2行で書いてるupdate_attribute(=2回データベースアクセスが発生する)をupdate_columnsで1回のデータベースアクセスにしよう、ってことか。
まとめるだけだから引数は変えなくて問題ないかな。
app/models/user.rb
class User < ActiveRecord::Base : # アカウントを有効にする def activate update_columns(activated: true, activated_at: Time.zone.now) end : # パスワード再設定の属性を設定する def create_reset_digest self.reset_token = User.new_token update_columns(reset_digest: User.digest(reset_token), reset_sent_at: Time.zone.now) end
テスト実行して問題ないことを確認。
$ bundle exec rake test 48 tests, 217 assertions, 0 failures, 0 errors, 0 skips
演習終わり!
10.6 証明: 期限切れの比較
この説では、10.2.4で用いたパスワード期限切れの期間の比較が正しいことを証明します。
私の中では納得できている話なのでさらっと読むだけ。
数式で書くと順を追って理解できるから分かりやすいね。
今日の学習時間は【14分】。
これにて第10章終わり!
次は「第11章 ユーザーのマイクロポスト」から。