我有一个名为 "产品 "的模型,我想获得 "产品"。id
, name
和ActiveRecord的动态计算属性值。SELECT
声明。Product
模型有 id
, name
, product_type
属性.目前我正在尝试使用类似SQL的方法
Product.select("id, name, CASE WHEN product_type = 'AB' THEN 'xyz1' WHEN product_type = 'BC' THEN 'xyz2' END AS custom_value")
翻译成以下Raw SQL
SELECT id, name,
CASE
WHEN product_type = 'AB' THEN 'xyz1'
WHEN product_type = 'BC' THEN 'xyz2'
END AS custom_value
FROM Product
但这种方法并不返回在运行时计算出的列,它只返回在运行时计算出的 id
和 name
栏目,用于 Product
记录。
product_type "列并没有在返回值中明确显示,但它在那里可以使用。如果你执行 Product.select(...).first.case
你会看到它相应的值。
如果你想用不同的方式来识别和访问它,你可以使用一个别名。
Product.select("
id,
name,
CASE
WHEN product_type = 'AB' THEN 'xyz1'
WHEN product_type = 'BC' THEN 'xyz2'
END AS foo
").first.foo
# "xyz1"