[RUBY] [Rails] Lassen Sie uns den Schwellenwert für die "Längenprüfung" der Modellvalidierung dynamisch aus Tabelleninformationen abrufen

Angenommen, Sie haben die folgende Benutzertabelle.

mysql> desc users;
+-----------------------------+-------------+------+-----+---------+----------------+
| Field                       | Type        | Null | Key | Default | Extra          |
+-----------------------------+-------------+------+-----+---------+----------------+
| id                          | bigint(20)  | NO   | PRI | NULL    | auto_increment |
| name                        | varchar(100)| NO   |     | NULL    |                |
| created_at                  | datetime    | NO   |     | NULL    |                |
| updated_at                  | datetime    | NO   |     | NULL    |                |
+-----------------------------+-------------+------+-----+---------+----------------+

In diesem Fall wird der Name beim Erstellen eines Rails-Benutzermodells häufig mit weniger als 100 Zeichen überprüft. Haben Sie zu diesem Zeitpunkt den Code 100 wie unten gezeigt hart codiert?

app/models/user.rb


validates :name, presence: true, length: { maximum: 100 }

Rails erleichtert das Abrufen von Metainformationen zu Datenbanktabellen. Auf diese Weise können 100 Teile dynamisch aus der Tabellendefinition entnommen werden, wie unten gezeigt.

validates :name, presence: true, length: { maximum: columns.find{|c| c.name == 'name' }.limit }

Es wird empfohlen, auf diese Weise zu schreiben, da der Validierungswert automatisch aktualisiert wird, wenn die Tabellendefinition geändert wird.

Recommended Posts

[Rails] Lassen Sie uns den Schwellenwert für die "Längenprüfung" der Modellvalidierung dynamisch aus Tabelleninformationen abrufen
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
Überprüfen Sie den Migrationsstatus von Schienen
[Rails] Ruft einen eindeutigen Datensatz aus der Tabelle ab, die durch die Join-Methode von Active Record verknüpft wird (Rails-Lernprogramm, Kapitel 14).
[Java] Ermittelt die Länge der Ersatzpaarzeichenfolge
Lassen Sie uns das Gefühl von Spring Boot + Swagger 2.0 überprüfen
[Rails / Eindeutigkeitsbeschränkung] Überprüfen der Modellvalidierung auf der Konsole / Eindeutigkeitsbeschränkung für mehrere Spalten
Von der Einführung des Geräts bis zur Erstellung der Benutzertabelle
[Rails] So ändern Sie den Spaltennamen der Tabelle
[Rails] Standardmäßig festgelegte Kennwortüberprüfung abbrechen / ändern
[Rails] So erhalten Sie den Inhalt starker Parameter
Ich kann den Bildschirm der Rails-Datenbankkonsole nicht verlassen