我有一组典型的模型,包含父/子/孙/格栅层次结构。我创建了关系:
@summary = Function.joins(:benchmrks=>{:indicators=>:results})
.select("functions.id , benchmrks.id , indicators.id , avg(results.score) ")
.group("results.indicator_id")
我无法访问结果集中的列,所以我这样做了:
@summary.each do |s|
s.attributes
end
我看到定义了两个列,它们都可以访问:
{"id"=>1, "avg(results.score)"=>3.0}
如果我更改了.select()并手动将列重命名为:
.select("functions.id as f_id, benchmrks.id as b_id, indicators.id as i_id , avg(results.score) as avg")
我看到4列,它们都可以访问:
{"f_id"=>1, "b_id"=>1, "i_id"=>1, "avg"=>3.0}
因此,列名称(functions.id,benchmrks.id和indicators_id)的点SQL语法似乎被rails压缩为单个id。这对我来说是意想不到的行为。
我应该以不同的方式做到这一点吗?