Rails validates_uniqueness_of über mehrere Spalten mit Groß- und Kleinschreibung
-
19-09-2019 - |
Frage
Ich habe ein Modell, das zwei Felder hat, die ich first_name und last_name nennen, und ich möchte sicherstellen, dass die Kombination der beiden Fall-unsensibel einzigartig sind. Ich habe auf halbem Weg dorthin gekommen durch diesen mit:
validates_uniqueness_of :first_name, :scope => :last_name
Das Problem ist, dass die Einzigartigkeit Prüfung Groß- und Kleinschreibung zu sein scheint, obwohl die Dokumentation sagt es Groß- und Kleinschreibung standardmäßig sein sollte. So einen vorhandenen Datensatz gegeben:
{ :first_name => 'John', :last_name => 'Smith' }
Dies wird erlaubt:
{ :first_name => 'JOHN', :last_name => 'SMITH' }
Neben jedem zusätzlichen Datensatz, in dem es eine Variation von Fall entweder in dem ersten oder Nachnamen. Warum werden diese Aufzeichnungen erlaubt? Wie kann ich Groß- und Kleinschreibung Einzigartigkeit über beiden Felder zusammen?
erzwingenLösung
Haben Sie versucht, validates_uniqueness_of :first_name, :scope => :last_name, :case_sensitive => false
?
Die Dokumentation sagt es standardmäßig wahr ist.
(ich glaube, der Link gab einige veraltete Dokumentation. IIRC, die Standardeinstellung für das hat in den letzten paar Jahren ändern.)