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