如何提取 Rails 枚举的字段并获取整数数组?

Tai*_*chi 4 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!
Run Code Online (Sandbox Code Playgroud)

我可以这样写Foo.pluck(:bar).map {|bar| Foo.bars[bar]},但我想写得更短一些。

如何实现这一目标?

Seb*_*lma 7

您可以使用别名:

Foo.pluck('bar AS f')
Run Code Online (Sandbox Code Playgroud)

它将返回一个整数数组。

它基于文档中的以下内容工作:

Pluck 返回一个属性值数组,该数组经过类型转换以匹配所提取的列名称(如果可以推断出它们)。

由于您返回的值无法推断,因此将返回其“数据库值”。