我想驗證兩列在我的用戶模型中是唯一的。我搜索谷歌和從我的理解下面的代碼將無法正常工作:驗證兩列的唯一性
validates :login, :uniqueness=>true
validates :email, :uniqueness=>true
在我的情況下這樣做,將驗證電子郵件的唯一性,但不會驗證登錄用戶的唯一。我設置登錄在數據庫上必須是唯一的。但是,如果它已經存在,所有將會產生的運行時錯誤。我不想在生產中出現這種錯誤,因爲這會導致500個內部服務器錯誤,用戶不會理解。
關於如何驗證這兩個字段的唯一性的任何想法?
認證時使用:
- 慘慘
- 設計
- 設計Invitable
更新:
從我可以告訴這個問題是原因d由Devise,特別是驗證電子郵件和密碼的validatable模塊。
更新2:
從設計卸下可驗證模塊將導致既不唯一性檢查。
更新3:
看來,遺贈是不是造成問題的原因。相反,名爲Devise Invitable的寶石是。刪除這個寶石會導致驗證被觸發。它也似乎是這個寶石試圖強制電子郵件領域的驗證。由於這種寶石的性質,它是有道理的,但不應該被阻擋。
您使用的是驗證寶石嗎?如果是這樣,那可能會引起驗證。這應該起作用,所以上游有某處衝突。 – JohnMetta
@JohnMetta我正在使用CanCan與Devise –
你所描述的應該工作。但你也可以嘗試「validates_uniqueness_of:login,:email」 - 這個運行時錯誤是怎麼樣的?您正在使用哪種版本的導軌? – tmaximini