Rails 3对一组字段的验证

时间:2011-05-18 10:08:29

标签: ruby-on-rails ruby-on-rails-3 mongoid

我有一个包含大量字段的模型。并非所有字段都是基于用户选择某种类型的表单而使用的。我有大约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 个答案:

答案 0 :(得分:1)

这样的东西?

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) }

答案 1 :(得分:1)

我发现模型类必须对所涉及的视图有深入的了解。如果视图中的表单以不同方式命名,则解决方案将不起作用。您将需要使用ASP.NET中使用的“验证组”。您可以对其进行一些搜索,并为Rails找到类似的解决方案或自己滚动。也许这个会有所帮助:https://github.com/akira/validationgroup