序文
今週は本当にずっとぼーっとしてたんですが大分回復してきました。
進捗
- 第6章 ユーザーのモデルを作成する
- 6.3 セキュアなパスワードを追加する
- 6.4 最後に
- 第7章 ユーザー登録
- 7.1 ユーザーを表示する
コード実装部分(一部)
/sample_app/test/models/user_test.rb
require 'test_helper' class UserTest < ActiveSupport::TestCase # 実際のテストの前に実行されるメソッド def setup @user = User.new(name: "Example User", email: "user@example.com", password: "foobar", password_confirmation: "foobar") end (中略) # emailの形式は正しくなっているか test "email validation should accept valid addresses" do valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org first.last@foo.jp alice+bob@baz.cn] valid_addresses.each do |valid_address| @user.email = valid_address assert @user.valid?, "#{valid_address.inspect} should be valid" end end # 不正な形式のメールアドレスをはじくか test "email validation should reject invalid addresses" do invalid_addresses = %w[user@example,com user_at_foo.org user.name@example. foo@bar_baz.com foo@bar+baz.com foo@bar..com] invalid_addresses.each do |invalid_address| @user.email = invalid_address assert_not @user.valid?, "#{invalid_address.inspect} should be invalid" end end # 重複するメールアドレスをはじくか test "email addresses should be unique" do duplicate_user = @user.dup # 大文字にしてもはじくか duplicate_user.email = @user.email.upcase @user.save assert_not duplicate_user.valid? end # /sample_app/app/models/user.rbのbefore_saveコールバックは動いているか 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 # パスワードに空白が含まれていないか test "password should be present (nonblank)" do # 不正なパスワードを設定して、assert_notになるか @user.password = @user.password_confirmation = " " * 6 assert_not @user.valid? end # パスワードは6文字以上でなければならない test "password should have a minimum length" do # 不正なパスワードを設定して、assert_notになるか @user.password = @user.password_confirmation = "a" * 5 assert_not @user.valid? end end
GitHub
実行結果
感想
Railsに実装されているhas_secure_passwordメソッドを使用して、セキュアなUserモデルを作成していく。
"パスワードをハッシュ化する"という意味がようやく明確に理解できた気がする。
平文のパスワードがDBに保存されず、管理人にすらパスワードが見えないならキーロガーでも仕込まれない限り漏洩しようがない(気がする)。
それはそれとして個人レベルのウェブアプリでさえなんでもかんでもログインさせようとするのはこのチュートリアルが原因かもしれないという気もした。
体調が大分回復したことがはっきりと自覚できている。
やはり昨日は相当頭が回っていなかったように思う。
今年中にできればチュートリアルを終わらせたいところだがさて。
カロリーメイトください。

- 出版社/メーカー: 大塚製薬
- メディア: 食品&飲料
- この商品を含むブログを見る
BGM
GOOD MUSIC / KICK THE CAN CREW