冗余验证?

时间:2012-04-29 10:12:28

标签: ruby-on-rails

在阅读this thread之后,它涵盖了验证belongs_to对象与其ID之间的区别,我有一个相关的问题:

我有以下验证

validates_presence_of :batch_id
validates_numericality_of :batch_id, :only_integer => true, :greater_than => 0

第二个附加检查是否验证:batch_id值得,还是多余的?

理论上,Rails知道batch_id的语义含义,并且可以比仅仅存在时更彻底地验证它。例如,我不希望batch_id通过值为-1。

感谢。

1 个答案:

答案 0 :(得分:1)

你应该使用

belongs_to :batch
validates_presence_of :batch

在这种情况下,Rails将检查数据库中现有的指定批处理ID。如果使用validates_presence_of :batch_id,Rails将只检查batch_id属性的存在为整数。如果您不想检查数据库中的现有数据但是希望它是肯定的,那么您应该使用validates_numericality_of,这不是多余的。