У меня есть перечисление в моей модели, которое соответствует столбцу в базе данных.
В enum
выглядит следующим образом :
enum sale_info: { plan_1: 1, plan_2: 2, plan_3: 3, plan_4: 4, plan_5: 5 }
Как получить целочисленное значение?
я пробовал
Model.sale_info.to_i
Но это возвращает только 0.
ruby-on-rails
ruby-on-rails-4
Клейтон
источник
источник
Model.sale_info.value.to_i
? напримерModel.sale_info.plan_1.to_i
integer
Ответы:
Вы можете получить целочисленные значения для перечисления из класса, в котором находится перечисление:
Это возвращает хеш вроде:
Затем вы можете использовать значение sale_info из экземпляра
Model
класса для доступа к целочисленному значению для этого экземпляра :источник
Вы можете получить целое число так:
Обновление для рельсов 5
Для рельсов 5 указанный выше метод теперь возвращает строковое значение :(
На данный момент я вижу лучший метод:
Ответ Шедвелла также продолжает работать для рельсов 5.
источник
Рельсы <5
Другой способ - использовать
read_attribute()
:Рельсы> = 5
Ты можешь использовать
read_attribute_before_type_cast
источник
read_attribute_before_type_cast
.Мой короткий ответ
Model.sale_infos[:plan_2]
на тот случай, если вы хотите получить ценностьplan_2
источник
Я написал метод в моей модели, чтобы добиться того же в моем приложении Rails 5.1.
Для вашего случая добавьте это в свою модель и при необходимости вызовите его на объекте.
источник