问题描述
我正在使用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返回类型转换为匹配的属性值数组 摘录的列名(如果可以推导的话)。
由于您要返回的值无法推断,因此将返回其“数据库值”。