![]() |
|
|
![]()
|
|
| railist |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.10.2010 Репутация: нет Всего: нет |
Я недавно начал изучать rails в целом. и третью версию этого фреймворка в частности , поэтому не судите, пожалуйста, строго за дилетантский вопрос.
Суть в том, что бывает такое, что нужно сделать несколько проверок для одного поля, но выполнять каждую последующую только в случае успешности прохождения предыдущей. Например, нужно проверить пришедший от пользователя, заполнившего форму, адрес электронной почты: сначала проверяем заполнен ли вообще адрес электронной почты, далее, если поле не пустое, проверяем количество символов в адресе, если количество символов в допустимом диапазон, проверяем общий формат адреса электронной почты. И вот в модели я делаю проверку
:email => true - это самописный (точнее скопированный с инета) валидатор, проверяющий правильность формата адреса эл. почты. Так вот, если я не ввожу адрес электронной почты(пустая строка), то срабатывают сразу все три валидатора и я получаю три сообщения об ошибке - пустое поле, недостаточное количество символов и неверный формат. Как сделать так, чтобы каждая последующая проверка выполнялась только в том случае, если предыдущая прошла успешно(не было найдено ошибок)? Конечно, конкретно эту задачу можно решить, например, написав свою функцию валидации, но это не так красиво и вообще вопрос именно о том можно ли реализовать поочередные проверки, каждая из которых выполняется только в случае успешного прохождения предыдущей, используя стандартные валидаторы. Это сообщение отредактировал(а) railist - 12.10.2010, 23:32 |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Ну если у тебя это принципиальная позиция для всего проекта, то проще пропатчить ActiveModel, чем каждый раз писать кастомные вадидаторы.
Попробуй, например, так:
Этот код надо поместить в один из инициализаторов в папке config/initializers -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| railist |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.10.2010 Репутация: нет Всего: нет |
Ок, спасибо за разъяснение
|
|||
|
||||
![]()
|
| Правила форума "Ruby on Rails" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby On Rails | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |