Атрибуты помощника validates_length_of - PullRequest
0 голосов
/ 21 мая 2019

Есть ли какой-либо атрибут в помощнике validates_length_of, который позволяет тестируемому полю принимать только один из 2 фиксированных размеров, например 10 и 12? В случае, если пользователь отправил значение 11, не будет принято.

Я уже исследовал некоторые атрибуты, но ничего не нашел

Код, который я пытался запустить, был таким:

validates_length_of :field, is: 14 || 18

Фрагмент кода не выдает ошибку, а принимает только первое значение

1 Ответ

0 голосов
/ 21 мая 2019

В вашем коде || является оператором ruby ​​boolean or, он возвращает первый аргумент, если он не ложный, и второй в противном случае.

Валидатор длины не принимает массив для is в текущемрельсы, так что для вашего случая вам придется написать собственный валидатор:

validate :length_of_my_field

private def length_of_my_field
  errors.add(:field, "should have length of 12 or 18") unless [12, 18].include?(field.size)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...