Учебное пособие по Ruby on Rails ArgumentError: неизвестный валидатор: ‘PresenseValidator’

#ruby-on-rails #railstutorial.org

#ruby-on-rails #railstutorial.org

Вопрос:

Я студент, изучающий учебное пособие по ruby on rails. Я работаю над Sample_App, и все работало зеленым цветом, пока я не добавил несколько тестов на действительность пароля. теперь я получаю 1 ошибку и 2 сбоя. Тест, генерирующий ошибку, меняется каждый раз, когда я запускаю тест, но это всегда средство проверки присутствия. Сбои остаются неизменными.

ОШИБКА[«test_layout_links», #<Minitest::Reporters::Suite:0x000055584f4fae28 @name=»SiteLayoutTest»>, 0.00946968999960518] test_layout_links#SiteLayoutTest (0.01с) ArgumentError: ArgumentError: Неизвестный валидатор: ‘PresenseValidator’ app / models /user.rb:10:в <class:User>' app/models/user.rb:1:in

СБОЙ [«test_password_should_be_present_(непустой)», #<Minitest::Reporters::Suite:0x00007f2b307e3c60 @name=»UserTest»>, 0.07021111799986102] test_password_should_be_present_(непустой)#UserTest (0.07с ) Ожидаемое значение true равно нулю или false test/models/user_test.rb:67:в `блокев классе: UserTest’

СБОЙ [«test_password_should_have_minimum_length», #<Minitest::Reporters::Suite:0x00007f2b308e9948 @name=»UserTest»>, 0.09405937999872549] test_password_should_have_minimum_length#UserTest (0,09 с) Ожидаемое значение true равно нулевой или ложный тест/models/user_test.rb:72:в «блоке в классе: UserTest»

18/18: [===========================================================================================================================================] 100% Время: 00:00:00, Время: 00:00:00

Выполнено за 0,54466 с 18 тестов, 31 утверждение, 2 сбоя, 1 ошибка, 0 пропусков

 class User < ApplicationRecord
  
    before_save { email.downcase! }
    validates :name,  presence: true, length: { maximum: 50 }
    VALID_EMAIL_REGEX = /A[w -.] @[a-zd-] (.[a-zd-] )*.[a-z] z/i
    validates :email, presence: true, length: { maximum: 255 },
                      format: { with: VALID_EMAIL_REGEX },
                      uniqueness: true
    has_secure_password
    validates :password, presense: true, length: { minimum: 6 }
  end
 

это мой файл user.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
  
  test "should be valid" do
    assert @user.valid?
  end
  
  test "name should be present" do
    @user.name = "       "
    assert_not @user.valid?
  end
  
  test "email should be present" do
    @user.email = "       "
    assert_not @user.valid?
  end
  
  test "name should not be too long" do
    @user.name = "a" * 51
    assert_not @user.valid?
  end
  
  test "email should not be too long" do
    @user.email = "a" * 244   "@example.com"
    assert_not @user.valid?
  end
  
  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
    @user.save
    assert_not duplicate_user.valid?
  end
  
  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
    @user.password = @user.password_confirmation = " " * 5
    assert_not @user.valid?
  end
  
  test "password should have minimum length" do
    @user.password = @user.password_confirmation = "a" * 5
    assert_not @user.valid?
  end 
end
 

это мой тестовый файл. Это последние два файла, с которыми я работал, когда появились ошибки. Буду признателен за любую помощь, я могу предоставить дополнительную информацию или другие части кода, если кто-нибудь сможет выяснить, где еще мне нужно искать, что происходит.

Комментарии:

1. Вы неправильно presence написали validates :password, presense: true, length: { minimum: 6 } .

2. Не могу поверить, что я это пропустил! Спасибо, я прошел через эту строку, вероятно, 100 или более раз. Клянусь, это всегда самая простая, мельчайшая деталь….