Rails validates_uniqueness_of sur plusieurs colonnes avec la casse
-
19-09-2019 - |
Question
J'ai un modèle qui a deux domaines que je vais appeler prenom et last_name, et je veux vous assurer que la combinaison des deux sont insensibles à la casse unique. J'ai obtenu à mi-chemin en utilisant ceci:
validates_uniqueness_of :first_name, :scope => :last_name
Le problème est que la vérification unique semble être sensible à la casse, même si la documentation indique qu'il doit être insensible à la casse par défaut. Donc, étant donné un enregistrement existant:
{ :first_name => 'John', :last_name => 'Smith' }
Il sera permis:
{ :first_name => 'JOHN', :last_name => 'SMITH' }
De même que tout enregistrement supplémentaire où il y a une variation de cas dans le premier ou le nom de famille. Pourquoi ces documents sont-ils autorisés? Comment puis-je appliquer l'unicité cas insensible dans les deux champs ensemble?
La solution
Avez-vous essayé validates_uniqueness_of :first_name, :scope => :last_name, :case_sensitive => false
?
La documentation du il est vrai par défaut.
(Je pense que le lien que vous avez donné est une documentation obsolète. IIRC, la valeur par défaut pour cela ne changer dans les deux dernières années).