#ruby-on-rails
#ruby-on-rails
Вопрос:
Я использую Rails 5.2.
Я хочу извлечь поле перечисления и получить массив целых чисел.
class Foo < ApplicationRecord
enum bar: { val1: 1, val2: 2 }
end
Foo.pluck(:bar) #=> ['val1', 'val2']
Foo.pluck('foos.bar') #=> ['val1', 'val2']
Foo.pluck(:bar_before_type_cast) #=> DB error!
Я могу написать это как Foo.pluck(:bar).map {|bar| Foo.bars[bar]}
, но я хочу написать это короче.
Как этого добиться?
Ответ №1:
Вы можете использовать псевдоним:
Foo.pluck('bar AS f')
Он вернет массив целых чисел.
Это работает на основе следующего из документов:
Pluck возвращает массив значений атрибутов, приведенных к типу, чтобы соответствовать извлеченным именам столбцов, если они могут быть выведены.
Поскольку возвращаемое вами значение является чем-то, что невозможно вывести, вместо этого возвращается его «значение базы данных».