如何选择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]}那样写,但是我想写得更短些。

如何实现?

解决方法

您可以使用别名:

Foo.pluck('bar AS f')

它将返回整数数组。

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

Pluck返回类型转换为匹配的属性值数组 摘录的列名(如果可以推导的话)。

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