2012-04-29 123 views
0

閱讀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

您應該使用

belongs_to :batch 
validates_presence_of :batch 

在這種情況下Rails會檢查指定的批次編號爲現有的數據庫。如果您使用validates_presence_of :batch_id,則Rails將僅檢查batch_id屬性的整數。如果您不想檢查數據庫中是否存在,但希望它是正面的,則應該使用validates_numericality_of,這不是多餘的。