使用ActiveRecord :: Base.connection返回哈希而不是数组

时间:2014-07-28 07:55:15

标签: ruby-on-rails

我必须使用这样的查询:

query = Enc.joins(:rec).group("enc.bottle").
select("enc.bottle as mode, count(rec.id) as numrec, sum(enc.value) as sumvalue")

我用的是:

@enc = ActiveRecord::Base.connection.select_all(query)

要获取数据,我要做@enc.rows.first[0](它有效)

@enc.rows.first["mode"]不起作用!因为@enc.rows的每一行都包含数组..而不是具有每个字段名称的地图。

也许select_all是一种错误的方法。

是否存在另一种获取字段名称数据的方法?

谢谢

修改

Description

1 个答案:

答案 0 :(得分:1)

如果您可以将模型与查询相关联,则无需使用通用select_all方法。您可以像这样使用find_by_sql

Enc.find_by_sql(query).first.mode
# => testing

请注意,在检查结果时,您将无法看到别名,但它们就在那里。此外,惯例是对表使用多个名称。您可能会发现使用默认设置更容易。