Tengo una enumeración en mi modelo que corresponde a la columna de la base de datos.
El enum
parece:
enum sale_info: { plan_1: 1, plan_2: 2, plan_3: 3, plan_4: 4, plan_5: 5 }
¿Cómo puedo obtener el valor entero?
He intentado
Model.sale_info.to_i
Pero esto solo devuelve 0.
ruby-on-rails
ruby-on-rails-4
Cleyton
fuente
fuente
Model.sale_info.value.to_i
? Por ejemploModel.sale_info.plan_1.to_i
integer
Respuestas:
Puede obtener los valores enteros para una enumeración de la clase en la que se encuentra la enumeración:
Eso devuelve un hash como:
Luego puede usar el valor sale_info de una instancia de la
Model
clase para acceder al valor entero para esa instancia :fuente
Puede obtener el número entero así:
Actualización para rails 5
Para rieles 5, el método anterior ahora devuelve el valor de cadena :(
El mejor método que puedo ver por ahora es:
La respuesta de Shadwell también sigue funcionando para Rails 5.
fuente
Rieles <5
Otra forma sería usar
read_attribute()
:Rieles> = 5
Puedes usar
read_attribute_before_type_cast
fuente
read_attribute_before_type_cast
.Mi respuesta corta es
Model.sale_infos[:plan_2]
en caso de que desee obtener el valor deplan_2
fuente
Escribí un método en mi modelo para lograr lo mismo en mi aplicación Rails 5.1.
Catering para su caso, agregue esto a su modelo y llámelo en el objeto cuando sea necesario
fuente