首页 > 解决方案 > 如何提取 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]},但我想写得更短一些。

如何做到这一点?

标签: ruby-on-rails

解决方案


您可以使用别名:

Foo.pluck('bar AS f')

它将返回一个整数数组。

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

Pluck 返回一个属性值数组,类型转换为匹配采摘的列名,如果它们可以推导出来的话。

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


推荐阅读