Bei der Implementierung eines Prozesses wie dem Aktualisieren und Speichern der Profilinformationen eines Benutzers möchte ich nur die Informationen eingeben, die der Benutzer ändern möchte, und andere Formularvariationsprüfungen (insbesondere Kennwörter) überspringen! Ich denke, es gibt solche Szenen. Dieses Mal werde ich Ihnen zeigen, wie es geht.
Verwenden Sie die Option : on
in den Validierungsoptionen. Wenn Sie beispielsweise "on :: create" festlegen, kann die Validierungsprüfung nur durchgeführt werden, wenn ein neuer Datensatz erstellt wird.
In meinem Fall wurde die Validierungsprüfung auch für die Nutzungsbedingungen und die Prüfung der persönlichen Informationen (akzeptierte Spalte) durchgeführt, sodass diese Validierungsprüfung auch während der Aktualisierungsaktion aktiviert wurde und die Benutzerinformationen nicht geändert werden konnten. Ich tat. Dies kann vermieden werden, indem die Option : on
verwendet wird, um die Validierungsprüfung nur durchzuführen, wenn ein neuer Benutzer registriert ist.
user.rb
validates :password, presence: true, length: { minimum: 6 }, on: :create
validates :accepted, acceptance: { message: 'Bitte prüfen' }, on: :create
Sie können die Aktion wie folgt angeben.
Sie können auch einen benutzerdefinierten Kontext mit der Option : on
definieren!
Weitere Informationen finden Sie unter Dieses Element im Rails-Handbuch.
Sie können dasselbe auch mit einem Passwort tun, indem Sie allow_nil: true
setzen.
Dies ist eine Option, die nicht überprüft wird, ob der Wert Null ist.
e? Wenn ich dies spezifiziere, wird das leere Passwort gespeichert? ?? Ich denke, dass has_secure_password verwendet wird, um die Existenz zu überprüfen, wenn das Objekt erstellt wird (meistens wird gem'bcrypt 'verwendet), so dass ein leeres Passwort nicht in der Datenbank gespeichert wird. Da ist gar nichts.
Daher ist es möglich, die Validierung nur zu überspringen, wenn die Aktualisierungsaktion ausgeführt wird.
Dies ist eine persönliche Entwicklung und der Umfang ist immer noch klein, aber ich hatte das Gefühl, dass gelegentliche Änderungen der Validierung einen großen Einfluss auf die App für große Dienste haben würden. .. ** Die Validierung sollte nicht global definiert, sondern so weit wie möglich eingeschränkt werden, um den Einflussbereich zu verringern **!
Ich gebe aus, was ich jeden Tag gelernt habe! Wenn Sie Vorschläge haben, würde ich mich freuen, wenn Sie einen Kommentar abgeben könnten.
Recommended Posts