24
我有以下型號場驗證:驗證以確保唯一性但忽略空值?
validates_uniqueness_of :acronym, :scope => [:group_id], :case_sensitive => false
的問題是,這一領域是可選的,一個空/零值返回作爲已經採取的縮寫。我只想驗證,如果提供了一個值的首字母縮寫是唯一的。有沒有辦法更新此驗證只發生,如果有一個實際值..不零/空?
感謝
我有以下型號場驗證:驗證以確保唯一性但忽略空值?
validates_uniqueness_of :acronym, :scope => [:group_id], :case_sensitive => false
的問題是,這一領域是可選的,一個空/零值返回作爲已經採取的縮寫。我只想驗證,如果提供了一個值的首字母縮寫是唯一的。有沒有辦法更新此驗證只發生,如果有一個實際值..不零/空?
感謝
是的,有可以傳遞給驗證爲可選字段兩個可能的選擇::allow_blank
或:allow_nil
,這將跳過blank
和nil
領域的驗證,分別。如果您將驗證更改爲以下內容,則應該得到您想要的行爲:
validates_uniqueness_of :acronym, :allow_blank => true, :scope => [:group_id], :case_sensitive => false
非常感謝!我的代碼更全面。其他答案建議使用:除非或:如果,但我認爲這是最好的方法。讓group_id出陣列的任何問題? – 2014-04-02 20:08:11
這個規範是'it {is_expected.to validate_uniqueness_of(:acronym).scoped_to(:group_id).case_insensitive.allow_blank}' – 2015-02-18 16:20:40