2010-12-09 44 views
0

我需要在我的Rails應用中驗證名爲student_id的字段。如何在模型中執行條件驗證

此前的規定是: 領域是強制性的,將包括14個純數字,所以我把下面的代碼轉化爲學生的模型文件會滿足我的需求:

validates_presence_of :studnet_id 
validates_numericality_of :student_id, :only_integer => true 
validates_length_of  :student_id, :is => 14 

BUF如果如果字段存在,則需要更改它必須包含14個純數字,那麼如何實現這種條件驗證?

回答

3

假設你的意思是「字段可能爲空,但如果有一個值應該是14位」:

validates_numericality_of :student_id, :only_integer => true, :allow_blank => true 
validates_length_of  :student_id, :is => 14, :allow_blank => true 

注意「allow_blank」。這是你的意思,還是我誤解了這個問題?

1

聽起來像validates_format_of正是你所需要的。您可以給它一個正則表達式,它與14位數字的字符串匹配。

+0

如果這個字段是字符串 - 在這個問題上不太清楚,那麼肯定會同意這一點!我曾以爲這是一個整數。 – 2010-12-09 06:30:24

0

對於導軌的驗證,也有其中的一些默認驗證options.One是:allow_nil .The :allow_nil拖欠值是false。在validates_length_of選項:allow_nil意味着屬性可以是零;跳過驗證。

validates_numericality_of :student_id, :only_integer => true, :allow_blank => true 
validates_length_of  :student_id, :is => 14, :allow_nil => true