2009-09-08 3 views
0

Например, если у меня есть пользователь с адресом электронной почты, который нуждается в проверяющего на presense и формат:Комбинирование ошибки проверки в Rails

validates_presence_of :email_address, :message => "can't be blank" 
validates_format_of  :email_address, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i 

Если ничего не введено, как я могу предотвратить оба сообщения об ошибках появляются? Я знаю, что для этого сценария мне не понадобится validates_presence_of, это просто пример. Спасибо

ответ

3

В этом примере вы можете добавить :allow_blank => true в validates_format_of.

В целом, я думаю, это зависит от ситуации, чаще всего ее можно решить с помощью умного использования ActiveRecord validation options.

+0

Спасибо, что делает работу отлично. Когда я думаю о ситуации, в которой я хочу больше, я отправлю ее. – sebastyuiop

1

Вы также можете ввести условное: если, например:

validates_format_of :email_address, :with => EMAIL_REGEXP, :if => :email_address? 

EMAIL_ADDRESS,? метод должен возвращать true, только если это поле имеет непустое значение. Это может быть очень удобно для таких ситуаций.

+1

Yeh это было бы более relavent если условно можно использовать другой validates_foo ... validates_format_of: email_address,: с => EMAIL_REGEXP,: если => {validates_whatever_of: email_address} Я знаю, что не будет работать, но объясняет мой первоначальный вопрос несколько более четко. – sebastyuiop

+1

Я думаю, было бы намного лучше, если бы проверки могли быть скованы, как вы говорите, но пока нет поддержки. Все они работают все время, и каждый из них имеет возможность ввести сообщение об ошибке. – tadman

Смежные вопросы