我发现自己这样做了:
validates_numericality_of :mileage,:if => Proc.new {|car| car.mileage.present? }
有时,里程字段可能不会被发送,但是当它被发送时,我希望它被验证。在我的代码中包含Proc是没有问题的,但它的代码是我为所有其他可选字段复制的。有:if => present?
之类的快捷方式吗?
我正在使用Rails 3.0.5。
答案 0 :(得分:8)
:allow_nil - 如果设置为true,则跳过 如果属性是这个验证 nil(默认为false)。
根据API文档,空字符串在验证之前会转换为nils,因此这应该适用于任何一种情况。
答案 1 :(得分:1)
您可以使用before_validation
挂钩将空字符串转换为nil
,然后使用:allow_nil
option to validates_numericality_of
:
before_validation :clean_up_milage # This would replace '' with nil
validates_numericality_of :milage, :allow_nil => true