[RUBY] [Rails] Obtenons dynamiquement le seuil de validation du modèle "contrôle de longueur" à partir des informations de table

Supposons que vous ayez la table des utilisateurs suivante.

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    |                |
+-----------------------------+-------------+------+-----+---------+----------------+

Dans ce cas, lors de la création d'un modèle utilisateur Rails, je pense que ce nom est souvent validé avec moins de 100 caractères. À ce moment-là, avez-vous codé 100 en dur comme indiqué ci-dessous?

app/models/user.rb


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

Rails facilite l'obtention de méta-informations sur les tables de base de données. En utilisant cela, 100 pièces peuvent être prises dynamiquement à partir de la définition de table comme indiqué ci-dessous.

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

Il est recommandé d'écrire de cette manière car la valeur de validation sera mise à jour automatiquement lorsque la définition de la table sera modifiée.

Recommended Posts

[Rails] Obtenons dynamiquement le seuil de validation du modèle "contrôle de longueur" à partir des informations de table
Comment obtenir les informations les plus longues de Twitter à partir du 12/12/2016
Vérifier l'état de migration des rails
[Rails] Obtenez un enregistrement unique de la table jointe par la méthode de jointure de Active Record (Tutoriel Rails Chapitre 14)
[Java] Obtenir la longueur de la chaîne de paire de substitution
Vérifions la sensation de Spring Boot + Swagger 2.0
[Contrainte Rails / Unicité] Comment vérifier la validation du modèle sur la console / Contrainte d'unicité pour plusieurs colonnes
De l'introduction de la conception à la création de la table des utilisateurs
[Rails] Comment changer le nom de colonne de la table
[Rails] Annuler / modifier la validation du mot de passe du périphérique définie par défaut
[Rails] Comment obtenir le contenu des paramètres forts
Je ne peux pas sortir de l'écran de la console Rails db