Ich habe ein Modell, das zwei Felder hat, die ich Vorname und Nachname nennen werde, und ich möchte sicherstellen, dass die Kombination der beiden Groß-und Kleinschreibung nicht eindeutig sind. Ich habe durch die Verwendung dieses halben Weg bekommen:Rails validates_uniqueness_of über mehrere Spalten mit case-insensitivity
validates_uniqueness_of :first_name, :scope => :last_name
Das Problem ist, dass die Einzigartigkeit Prüfung scheint empfindlich zu sein Fall, auch wenn the documentation 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' }
sowie alle zusätzlichen Datensatz, in dem es eine Variation von Fall entweder in der ersten oder Nachnamen. Warum sind diese Aufzeichnungen erlaubt? Wie kann ich die Groß-/Kleinschreibung in beiden Feldern unabhängig von Groß- und Kleinschreibung durchsetzen?
Du hast Recht! Die Dokumentation, die ich gefunden habe, hat mich in die Irre geführt. Die Einstellung ': case_sensitive => false' hat es für den ersten_namen funktionieren lassen, funktioniert aber nicht in die andere Richtung. Es akzeptiert immer noch '{: first_name => 'John',: last_name => 'SMITH'}'. Gibt es einen Weg, um es in beide Richtungen funktionieren zu lassen? Würde ich nur zwei "validates_uniqueness_of" -Regeln mit dem vertauschten Feld einschließen? –
Ich habe versucht, eine weitere Validierung mit den beiden vertauschten Feldern hinzuzufügen. Es fängt jetzt Fälle ein, in denen eines der Felder unterschiedlich verkettet ist, aber nicht, wenn beide es sind, so dass es immer noch durchkommt: '{: first_name => 'JOHN',: last_name => 'SMITH'}'. –
Ich würde an dieser Stelle nur eine benutzerdefinierte Validierungsmethode schreiben, wenn ich Sie wäre. –