2013-04-24 62 views
1

我有這個驗證在我的模型:Rails的驗證是不允許記錄要插入

validates_uniqueness_of :micro_id, :conditions => ["date_active not null and date_inactive null"] 

我將此解釋爲:沒關係,其中micro_id是2695和date_active是插入,如果這是唯一的記錄不爲空且date_inactive爲空。

在數據庫中,對於micro_id 2695,我有一個記錄:它有一個date_active和一個date_inactive。當我有一個date_active和一個空的date_inactive時,我應該能夠爲2695插入一條新記錄。但是,我無法插入一條記錄。我確定這是導致驗證錯誤的驗證。

我是否錯誤地解釋了此驗證?

感謝,

回答

0

你的條件稍微偏離,你有date_active not null and date_inactive null,你應該is notisdate_active is not null and date_inactive is null被檢測爲空。這使你的驗證:

validates_uniqueness_of :micro_id, :conditions => ["date_active is not null and date_inactive is null"] 
+0

甜,謝謝你Izuriel。我以爲我通過一個例子瞭解到這一點,但我可能弄錯了。乾杯! – 2013-04-24 16:28:25

+0

@JohnCowan不用擔心,測試NULL值不像在SQL中測試其他值,它會讓我的OCD感到厭煩。我寧願做'column = NULL',就像我爲其他值做的一樣,但可惜:P – 2013-04-24 16:31:17