如果其他验证失败,Rails ActiveRecord在线验证是否有用?

时间:2012-05-11 18:59:51

标签: ruby-on-rails validation activerecord

如果我的某些字段中需要某些值的验证,例如format: { with: some_regex }inclusion: { in: some_array },它们将在空白或为零时失败,则将验证presence: true设置为有用的任何方式?在相同的情况下,如果其他验证失败,length: { }验证是否有用?

同样,{1..n}的长度验证是否可以排除存在验证的需要?

我正在尝试了解是否有更多事情发生,或者检查是否多余。例如,Rails教程对电子邮件地址进行了presence: true验证,但格式验证不应允许空白或零地址。看似多余,还是风格/惯例?

2 个答案:

答案 0 :(得分:1)

如果您正在使用类似format: regex的内容,并且您可以保证(通过单元测试很容易)空白或零属性将导致整个记录无效,那么是的,您不需要验证存在。与inclusion情况和length情况相同。

通常,添加更多验证不一定是件坏事。但是,如果您已经针对具有空白或零属性的情况彻底测试了您的模型,并且您当前的验证达到了预期的结果,那么您没问题。

答案 1 :(得分:0)

如果,则验证存在然后提及的任何内容。我宁愿不把

validates presence: true
例如,有

validates format: { with: some_regex }, allow_blank: false

因为后者已经涵盖了具有nil值的字段的情况。