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