Comment utiliser Enum dans Ruby et Rails Un mémo à retenir.
"Enum" signifie "type d'énumération". -DB est enregistré comme type int ou type booléen, et tout nom de clé associé à la valeur numérique peut être donné. -Dans le code source, le nom de la clé associée est utilisé.
avantage -Si le type de données est défini sur entier, il sera enregistré en tant que nombre dans le DB, mais s'il ne s'agit que d'un nombre, la signification du nombre ne peut pas être partagée. -Si vous le définissez comme une chaîne de caractères, il y a une forte possibilité de taper, mais si vous utilisez enum, vous n'avez pas à vous en soucier. ・ Facile à corriger.
Vous devez définir une énumération pour votre modèle. Il y a deux manières de le définir. ** 1. Définition uniquement ** ** 2. Spécifiez une valeur numérique dans la définition **
Définissez avec un tableau. Ils sont liés dans l'ordre de 0 dans l'ordre de définition. Dans l'exemple ci-dessous, hier → 0, aujourd'hui → 1, demain → 2 sont automatiquement triés. nom de la colonne enum: spécifiez enum avec [: nom de la clé que vous voulez donner].
** * [] Nanoto: Faites attention à la position **
Fichier modèle
nom de la colonne enum: [ :hier, :aujourd'hui, :demain]
↑ Que définir
enum Nom de la colonne: {Nom de la clé que vous voulez ajouter: Numéro correspondant} pour spécifier enum. ** * {} et: faites attention à la position **
Fichier modèle
nom de la colonne enum: {hier: 0,aujourd'hui: 1,demain: 2 }
↑ Que définir
Vous pouvez créer une boîte de sélection avec la description ci-dessous. ** Le nom de colonne et les types de colonnes multiples sont la même colonne et la colonne décrite après enum ** ** Le nom du modèle est le modèle décrit au moment de la définition **
Voir la fiche
<%= select :Nom de colonne, :name,Nom du modèle.Nom de colonne複数形.keys.to_a, include_blank: true %>
・ Je l'ai utilisé lors du changement de statut ou lorsque le statut a été modifié en même temps. ・ En comparant avec if etc. sur le contrôleur, je pense que vous pouvez comparer avec des caractères définis au lieu de nombres Exemple) si les informations que vous souhaitez comparer == "Hier" Exemple) Informations que vous souhaitez trouver .where (nom de la colonne: "aujourd'hui") .count etc.
Recommended Posts