J'ai une énumération dans mon modèle qui correspond à la colonne de la base de données.
Le enum
ressemble à:
enum sale_info: { plan_1: 1, plan_2: 2, plan_3: 3, plan_4: 4, plan_5: 5 }
Comment puis-je obtenir la valeur entière?
J'ai essayé
Model.sale_info.to_i
Mais cela ne renvoie que 0.
ruby-on-rails
ruby-on-rails-4
Cleyton
la source
la source
Model.sale_info.value.to_i
? par exempleModel.sale_info.plan_1.to_i
integer
Réponses:
Vous pouvez obtenir les valeurs entières d'une énumération à partir de la classe sur laquelle se trouve l'énumération:
Cela renvoie un hachage comme:
Vous pouvez ensuite utiliser la valeur sale_info d'une instance de la
Model
classe pour accéder à la valeur entière de cette instance :la source
Vous pouvez obtenir l'entier comme ceci:
Mise à jour pour les rails 5
Pour les rails 5, la méthode ci-dessus renvoie maintenant la valeur de chaîne :(
La meilleure méthode que je peux voir pour l'instant est:
La réponse de Shadwell continue également de fonctionner pour les rails 5.
la source
Rails <5
Une autre façon serait d'utiliser
read_attribute()
:Rails> = 5
Vous pouvez utiliser
read_attribute_before_type_cast
la source
read_attribute_before_type_cast
.Ma réponse courte est
Model.sale_infos[:plan_2]
au cas où si vous voulez obtenir de la valeurplan_2
la source
J'ai écrit une méthode dans mon modèle pour obtenir la même chose dans mon application Rails 5.1.
Pour votre cas, ajoutez-le à votre modèle et appelez-le sur l'objet en cas de besoin
la source