[RUBY] [Rails] So übergeben Sie eine Validierung wie ein Kennwort, wenn Sie eine Aktualisierungsaktion ausführen

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.

Implementierungsmethode

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 **!

Vielen Dank für das Lesen bis zum Ende!

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

[Rails] So übergeben Sie eine Validierung wie ein Kennwort, wenn Sie eine Aktualisierungsaktion ausführen
[Rails] So vermeiden Sie "Verwenden Sie die Syntax von Hash-Raketen", wenn Sie Rubocop ausführen
[Rails 5] Anzeigen des Bildschirms zum Ändern des Kennworts bei Verwendung von devise
So beheben Sie Fehler, die während der Installation von Rails 5.1.3 auftreten
So aktualisieren Sie Benutzeränderungen in Rails Devise, ohne ein Kennwort einzugeben
[Rails] Wie schreibe ich, wenn ich eine Unterabfrage mache?
[Validierung] Schienen Wie nach dem heutigen Datum angeben
So aktualisieren Sie Benutzerinformationen ohne Kennwort
Wie schreibe ich Rails
[Ruby / Rails] Was tun, wenn NoMethodError angezeigt wird, wenn eine destruktive Methode wie Filter verwendet wird?
So generieren Sie automatisch ein ER-Diagramm bei der Migration mit Rails 6
Festlegen von Umgebungsvariablen bei Verwendung von Payjp mit Rails
Was zu überprüfen ist, wenn Schienen db: Migration nicht bestanden
So geben Sie db beim Erstellen einer App mit Rails an
Verwendung von ArgumentMatchern wie Mockitos any () in Kotlin
[Rails 5] Verwendung von gem gon ~ Übergabe von Variablen von Rails an JS ~
[Rails] Eine Geschichte, die weiterhin fälschlicherweise den Grund überprüfte, warum die Aktualisierungsaktion nicht bestanden wurde (Aktualisierung)
[Rails] Verwendung von Enum
Wie man Schienenrouten liest
Verwendung von Rails Join
So aktualisieren Sie mit activerecord-import
So beenden Sie den Rails-Server
Wie schreibe ich Rails Seed
[Schienen] So deaktivieren Sie Turbolinks
[Rails] So verwenden Sie authenticate_user!
[Rails] So implementieren Sie Scraping
[Schienen] Wie man Samen macht
Wie schreibe ich Rails Routing
[Rails] So installieren Sie simple_calendar
[Rails] So installieren Sie reCAPTCHA
[Schienen] Verwendung von Scope
So testen Sie die Java-Vorschaufunktion (z. B. Java 15 Record) mit IntelliJ