Rails: проверка модели с форматом делает атрибут необходимым, хотя attribute_nil: true - PullRequest
0 голосов
/ 02 июля 2019

У меня есть пользовательская модель с различными атрибутами и проверками. Если пользователь создан, используется только адрес электронной почты и пароль, а другие могут быть изменены позже. Я хочу проверить :countries, чтобы он содержал только буквы, запятые и пробелы, а также по длине. Я пытаюсь добиться этого с помощью регулярного выражения и проверки формата. Но тогда я получаю сообщение об ошибке в тесте rspec, если я хочу сохранить пользователя только с паролем и адресом электронной почты, что страны недопустимы. Я думал, что это будет решено, если я добавлю allow_nil: true, но ничего не изменится. Без формата тест проходит.

Это проверка в user.rb:

validates :countries, allow_nil: true, length: {in: 2..100}, format: {with: /\A[a-z,\s]+\z/}

Ошибка теста:

  1) User saves with only email and password
     Failure/Error: user = User.create!(email: valid_email, password: valid_password)
 ActiveRecord::RecordInvalid:
   Validation failed: Countries is invalid
...