Rails 3 Validation для группы полей - PullRequest
0 голосов
/ 18 мая 2011

У меня есть модель с целой кучей полей.Не все поля используются на основе выбора пользователем определенного типа формы.У меня есть около 6 различных типов форм, поэтому поле может быть использовано для 4 из них.

Есть ли способ группировки проверки на основе элемента, т. Е.?

case xxx
  when "form1"
    validates :field1, :presence => true
  when "form2"
    validates :field1, :presence => true
  when "form3"
    validates :fiel2, :presence => true
end

Я будувыполняется проверка на стороне клиента, но мне, очевидно, потребуется также и сторона сервера, чтобы убедиться, что они предоставили достоверные данные.

Есть предложения, как это можно сделать?

Я использую Rails3 с Mongoid 2.0

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Я вижу проблему с классом модели, который должен иметь глубокие знания соответствующих представлений.Если формы в представлениях были названы по-другому, решение не будет работать.Вы захотите использовать «группы проверки», подобные тем, которые используются в ASP.NET.Вы можете сделать поиск по этому вопросу и либо найти подобное решение для Rails, либо свернуть свое собственное.Может быть, этот поможет: https://github.com/akira/validationgroup

1 голос
/ 18 мая 2011

Как то так?

validates :field1, :presence => true, :if => Proc.new { |foo| %w{form1 form2}.include?(foo.xxx) }
validates :field2, :presence => true, :if => Proc.new { |foo| %w{form1 form3}.include?(foo.xxx) }
validates :field3, :presence => true, :if => Proc.new { |foo| %w{form2 form3}.include?(foo.xxx) }
...