Rotaie validates_uniqueness_of su più colonne con il caso insensibilità
-
19-09-2019 - |
Domanda
Ho un modello che ha due campi, che chiamerò first_name e last_name, e voglio fare in modo che la combinazione dei due sono caso-insensitively unico. Ho ottenuto a metà strada utilizzando questo:
validates_uniqueness_of :first_name, :scope => :last_name
Il problema è che il controllo di unicità sembra essere maiuscole e minuscole, anche se la documentazione dice che dovrebbe essere case insensitive per impostazione predefinita. Quindi, dato un record esistente:
{ :first_name => 'John', :last_name => 'Smith' }
Questa sarà consentito:
{ :first_name => 'JOHN', :last_name => 'SMITH' }
Così come qualsiasi record ulteriore in cui v'è una variazione di caso sia nel nome o il cognome. Perché sono consentiti questi record? Come posso far rispettare caso unicità insensitive attraverso entrambi i campi insieme?
Soluzione
Hai provato validates_uniqueness_of :first_name, :scope => :last_name, :case_sensitive => false
?
La documentazione dice che è vero per impostazione predefinita.
(credo che il link che hai dato è in una certa documentazione ormai obsoleti. IIRC, il valore predefinito per questo è cambiato negli ultimi due anni).