・使用環境
AWS(cloud9)、rails 5.1.6、Ruby
・現在取り組んでいること(教材など含む)
rails tutorial6章6.3セキュアなパスワードを追加する。
・やりたいこと・解決したいこと
リスト6.40まで終わり、テストを実行したらエラーが8つ出てきて、解決方法を知りたい。
・うまくいっていない内容・すでに実行したこと
エラー内容
Ruby
1コード 2Finished in 0.569128s, 24.5991 runs/s, 24.5991 assertions/s. 3 4 1) Error: 5UserTest#test_email_addresses_should_be_unique: 6NoMethodError: undefined method `password_digest=' for #<User:0x0000000006969d48> 7Did you mean? password= 8 test/models/user_test.rb:5:in `setup' 9 10 2) Error: 11UserTest#test_name_should_not_be_too_long: 12NoMethodError: undefined method `password_digest=' for #<User:0x0000000006a216c8> 13Did you mean? password= 14 test/models/user_test.rb:5:in `setup' 15 16 3) Error: 17UserTest#test_email_validation_should_accept_valid_addresses: 18NoMethodError: undefined method `password_digest=' for #<User:0x0000000006a33300> 19Did you mean? password= 20 test/models/user_test.rb:5:in `setup' 21 22 4) Error: 23UserTest#test_email_validation_should_reject_invalid_addresses: 24NoMethodError: undefined method `password_digest=' for #<User:0x0000000006a39250> 25Did you mean? password= 26 test/models/user_test.rb:5:in `setup' 27 28 5) Error: 29UserTest#test_name_should_be_present: 30NoMethodError: undefined method `password_digest=' for #<User:0x0000000006a4ae60> 31Did you mean? password= 32 test/models/user_test.rb:5:in `setup' 33 34 6) Error: 35UserTest#test_email_should_not_be_too_long: 36NoMethodError: undefined method `password_digest=' for #<User:0x0000000006a50c48> 37Did you mean? password= 38 test/models/user_test.rb:5:in `setup' 39 40 7) Error: 41UserTest#test_should_be_valid?: 42NoMethodError: undefined method `password_digest=' for #<User:0x0000000006a62880> 43Did you mean? password= 44 test/models/user_test.rb:5:in `setup' 45 46 8) Error: 47UserTest#test_email_should_be_present: 48NoMethodError: undefined method `password_digest=' for #<User:0x0000000006a68668> 49Did you mean? password= 50 test/models/user_test.rb:5:in `setup' 51 5214 runs, 14 assertions, 0 failures, 8 errors, 0 skips 53 54user_test.rbファイル 55 56コード 57require 'test_helper' 58 59class UserTest < ActiveSupport::TestCase 60 def setup 61 @user = User.new(name: "Example User", email: "user@example.com", 62 password: "foobar", password_confirmation: "foobar") 63 end 64 65 test "should be valid?" do 66 assert @user.valid? 67 end 68 69 test "name should be present" do 70 @user.name = " " 71 assert_not @user.valid? 72 end 73 74 test "email should be present" do 75 @user.email = " " 76 assert_not @user.valid? 77 end 78 79 test "name should not be too long" do 80 @user.name = "a" * 51 81 assert_not @user.valid? 82 end 83 84 test "email should not be too long" do 85 @user.email = "a" * 244 + "@example.com" 86 assert_not @user.valid? 87 end 88 89 test "email validation should accept valid addresses" do 90 valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org 91 first.last@foo.jp alice+bob@baz.cn] 92 valid_addresses.each do |valid_address| 93 @user.email = valid_address 94 assert @user.valid?, "#{valid_address.inspect} should be valid" 95 end 96 end 97 98 test "email validation should reject invalid addresses" do 99 invalid_addresses = %w[user@example,com user_at_foo.org user.name@example. 100 foo@bar_baz.com foo@bar+baz.com] 101 invalid_addresses.each do |invalid_address| 102 @user.email = invalid_address 103 assert_not @user.valid?, "#{invalid_address.inspect} should be invalid" 104 end 105 end 106 107 test "email addresses should be unique" do 108 duplicate_user = @user.dup 109 duplicate_user.email = @user.email.upcase 110 @user.save 111 assert_not duplicate_user.valid? 112 end 113 114end 115 116user.rbファイル 117コード 118class User < ApplicationRecord 119 before_save { self.email = email.downcase } 120 validates :name, presence: true, length: { maximum: 50 } 121 VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i 122 validates :email, presence: true, length: { maximum: 255 }, 123 format: { with: VALID_EMAIL_REGEX }, 124 uniqueness: { case_sensitive: false } 125 has_secure_password 126end 127 128構文が間違えていないか確認(特に間違っていないと思いますが)、マイグレートを再度実行、バンドルインストールしたが正常にインストールされた。 129 130・自身の仮説 131マイグレートが成功したらschema.rbファイルにpassword_digestが追加されると思うので、マイグレートが正しく実行できていないかもしれません。 132 133以上になります。よろしくお願いいたします。
あなたの回答
tips
プレビュー