2010-12-09 5 views
0

Мне нужно проверить поле под названием 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

Предполагая, что вы имеете в виду «поле может быть пустым, но если это имеет значение, оно должно быть 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

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

+0

Обязательно согласен с этим, если поле является строкой - бит неясен из вопроса! Я предположил, что это инт. – 2010-12-09 06:30:24

0

Для проверки рельсов, есть некоторые проверки по умолчанию options.One из них :allow_nil .Отеля :allow_nil дефолта значения falsevalidates_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 
Смежные вопросы