как сделать условную проверку в модели - PullRequest
0 голосов
/ 09 декабря 2010

Мне нужно проверить поле с именем student_id в моем приложении rails.

Предыдущее требование: поле является обязательным и будет состоять из 14 чистых цифр, поэтому я добавлю следующий код в файл модели студентов, который удовлетворит мою потребность:

 validates_presence_of :studnet_id
 validates_numericality_of :student_id, :only_integer => true
 validates_length_of       :student_id, :is => 14

buf Если требование изменяется на существующее поле, оно должно состоять из 14 чистых цифр, как я могу реализовать условную валидацию?

Ответы [ 3 ]

3 голосов
/ 09 декабря 2010

Предполагая, что вы имеете в виду «поле может быть пустым, но если оно имеет значение, оно должно быть 14 цифр»:

validates_numericality_of :student_id, :only_integer => true, :allow_blank => true
validates_length_of       :student_id, :is => 14, :allow_blank => true

Обратите внимание на 'allow_blank'. Это то, что вы имеете в виду, или я неправильно истолковал вопрос?

1 голос
/ 09 декабря 2010

Похоже, validates_format_of - это именно то, что вам нужно.Вы можете задать ему регулярное выражение , соответствующее строке из 14 цифр.

0 голосов
/ 09 декабря 2010

Для проверки рельсов есть несколько параметров проверки по умолчанию. Один из них - :allow_nil. Значение по умолчанию :allow_nil - false. В validates_length_of параметры :allow_nil означают, что атрибут может быть равен нулю; пропустить проверку.

validates_numericality_of :student_id, :only_integer => true, :allow_blank => true
validates_length_of       :student_id, :is => 14, :allow_nil => true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...