Как сделать сценарии валидации в модели

Есть регистрация пользователя и его личный кабинет.
Мне нужно при регистрации валидировать поля: email, пароль, повтор пароля.
И есть личный кабинет, в котором нужно валидировать другие поля: имя, телефон. Причём нельзя менять email.
И другая форма в кабинете, в котором можно менять только пароль.
В мире Yii это называлось сценарии. В модели для валидации атрибутов устанавливались сценарии, при которых они срабатывали. Потом у экземляра модели ставился нужный сценарий и за счёт этого шла правильная валидация.
Есть ли в RoR что-то похожее?
  • Вопрос задан
  • 2739 просмотров
Решения вопроса 1
@Grey
Думаю, что в данном случае удобнее использовать with_option
В начале описываются общие валидации для всех полей формы (если таковые есть), а далее — условные.
validates :customertype, :presence => true, :inclusion => { :in => ["person","company"] }
with_options :if => :is_person? do |person|  
    person.validates :email, :presence => true, :length => {:minimum => 5}, :format => {:with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i}					
end

def is_person?
    self.customertype == "person"
end
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ataraev
@ataraev
Ruby, Go
Finally, the options :if, :unless, :on
validate :must_be_friends, :on => :create, :if => Proc.new {|comment| some_condition}

apidock.com/rails/v3.2.8/ActiveModel/Validations/ClassMethods/validate
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы