Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Грамотные сообщениях об ошибках валидации 
:(
    Опции темы
DezmASter
Дата 1.5.2007, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дизайнер :)
***


Профиль
Группа: Участник
Сообщений: 1520
Регистрация: 3.2.2006
Где: Украина, Запорожь е

Репутация: нет
Всего: 109



Представим что у нас есть модель User со следующими валидациями:

Код

class User < ActiveRecord::Base 

  validates_presence_of :username
  validates_presence_of :email
  validates_presence_of :password 
  validates_length_of :password, :in => 6..12

  attr_accessor :password 

end


Самая обычная модель с самыми обычными валидациями. Вот только, если мы не заполним поле пароль, у нас сработают сразу две ошибки: пароль не может быть пустым и пароль слишком короткий. Абсурд: конечно пароль короткий, ведь его нет!

Решается всё элементарно: добавляем флаг :allow_nil => :true для валидации длины пароля:

Код

class User < ActiveRecord::Base 

  validates_presence_of :username
  validates_presence_of :email
  validates_presence_of :password 
  validates_length_of :password, :in => 6..12, :allow_nil => true

  attr_accessor :password 

end


Теперь, если пользователь не введёт пароль, то сработает только валидация присутствия, а валидация на длину будет молчать как партизан.

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

Автор: Илья Сабанин
Сайт автора: http://www.rubybrothers.ru


Это сообщение отредактировал(а) DezmASter - 1.5.2007, 23:31
PM WWW ICQ Skype GTalk Jabber   Вверх
OmeZ
Дата 16.11.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 4.11.2007

Репутация: нет
Всего: нет



по моему это бред юзать 2 валидации для проверки пароля. Само собой ясно что 
Код

validates_length_of :password, :in => 6..12


УЖЕ включает в себя validates_presence_of

В данном случае достаточно только одной валидации и все
PM MAIL   Вверх
v2v
Дата 20.3.2008, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



Цитата(OmeZ @  16.11.2007,  14:00 Найти цитируемый пост)

УЖЕ включает в себя validates_presence_of

ты прочитал статью ;)
ты не введёшь пароль , а появится сообщение об ошибке : пароль слишком короткий.


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0744 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.