Railsの会26日目[ /authenticate/minimum / !!]
今回の範囲
パスワード設定
6文字分のスペースでパスワードを設定した場合falseで返すテスト
test "password should be present (nonblank)" do @user.password = @user.password_confirmation = " " * 6 assert_not @user.valid? end
最低5文字以内か調べる
test "password should have a minimum length" do @user.password = @user.password_confirmation = "a" * 5 assert_not @user.valid? end
minimum
カラムの最小値を求める。
User.minimum('age')
# SELECT MIN("users"."age") AS min_id FROM "users"
!!
論理オブジェクトに変換。
trueかfalseで返すようにする。
!!user.authenticate("foobar") => true
authenticate
認証に失敗した時にfalseを返す。
( !!がついている場合結果が反対になる)
間違えているpasswordを与えてみる
[14] pry(main)> user.authenticate("not_the_right_password") => false
正しい値を与えてみる
[15] pry(main)> user.authenticate("password") => #<User:0x007fcb694285b0 id: 1, name: "hoge", email: "h@h.com", created_at: Tue, 20 Jun 2017 16:09:49 UTC +00:00, updated_at: Tue, 20 Jun 2017 16:09:49 UTC +00:00, password_digest: "$2a$10$Hl8/iF2bbu7D37z3aeh5T.OMNdhRR0flsFhflsfF3L/E041sO">
6 章のまとめ
・マイグレーションを使うことで、アプリケーションのデータモデルを修正することができる
・Active Recordを使うと、データモデルを作成したり操作したりするための多数のメソッドが使えるようになる
・Active Recordのバリデーションを使うと、モデルに対して制限を追加することができる
・よくあるバリデーションには、存在性・長さ・フォーマットなどがある
・正規表現は謎めいて見えるが非常に強力である
・データベースにインデックスを追加することで検索効率が向上する。また、データベースレベルでの一意性を保証するためにも使われる。
・has_secure_passwordメソッドを使うことで、モデルに対してセキュアなパスワードを追加することができる