Ruby on rails 是否只有在字段';在Rails 3中,是否存在?

Ruby on rails 是否只有在字段';在Rails 3中,是否存在?,ruby-on-rails,validation,Ruby On Rails,Validation,我发现自己在这样做: validates_numericality_of :mileage,:if => Proc.new {|car| car.mileage.present? } 有时,里程字段可能不会发送,但发送时,我希望对其进行验证。我在代码中包含Proc没有问题,但是对于所有其他可选字段,我都在复制它。是否有类似于:if=>present的快捷方式?? 我正在使用Rails 3.0.5。请检查 :allow_nil-如果设置为true,则跳过 如果属性为 nil(默认值为fal

我发现自己在这样做:

validates_numericality_of :mileage,:if => Proc.new {|car| car.mileage.present? }
有时,里程字段可能不会发送,但发送时,我希望对其进行验证。我在代码中包含Proc没有问题,但是对于所有其他可选字段,我都在复制它。是否有类似于
:if=>present的快捷方式?
? 我正在使用Rails 3.0.5。

请检查

:allow_nil-如果设置为true,则跳过 如果属性为 nil(默认值为false)

根据API文档,空字符串在验证之前会转换为nil,因此这在任何情况下都应该有效。

您可以使用钩子将空字符串转换为
nil
,然后使用:


根据文档,“请注意,对于fixnum和float列,空字符串被转换为nil”,因此我认为它仍然可以工作。allow_nil将空格转换为nil,因此不需要这样做。
before_validation :clean_up_milage # This would replace '' with nil
validates_numericality_of :milage, :allow_nil => true