Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby On Rails > Грамотные сообщениях об ошибках валидации


Автор: DezmASter 1.5.2007, 23:30
Представим что у нас есть модель 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

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

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


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

В данном случае достаточно только одной валидации и все

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

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)