只有当所有属性都存在时,Rails才会验证多个属性lambda

时间:2013-09-03 16:06:21

标签: ruby-on-rails validation attributes lambda

我需要在模型中验证少数属性,只有在更新或创建对象时它们出现在params中。

 validates :attribute_a,format: {with: /some_regex/},  :if => lambda{ |object| object.attribute_a.present? }

attribute_a一样,attributescreated可能不存在多个updated。而不是为每个validates编写inclusion_in语句,有没有办法可以检查多个属性的存在,然后使用format:{with:/some_regex/ }validates :attribute_a,attribute_b,attribute_c,attribute_d,:format => {:with => /some_regex/}, :if => lambda{ |object| object.attribute_name.present? } 等常见验证来验证每个属性。

我想要类似以下代码的内容显然是错误的。

{{1}}

1 个答案:

答案 0 :(得分:2)

您可以使用validates_format_of

validates_format_of :attr_a, :attr_b, 
    with: /someregexp/,
    allow_blank: true

allow blank选项意味着如果该属性不存在,则regexp不必匹配。