2009-08-19 138 views
0

我得到属于用户的所有调用的平均值。用户可以有许多电话。因此,我搜索属于该用户的所有电话,并平均调用这些电话并将其添加到数组中。现在我需要将所有的电话求和。这是什么回来:使用ruby on rails访问哈希数组中的哈希

[{["2009-08-14", #<BigDecimal:87e1488,'0.81E2',4(8)>]=>nil, 
["2009-08-15", #<BigDecimal:87e12d0,'0.8100081168 83117E2',20(20)>]=>nil, 
["2009-08-17", #<BigDecimal:87e11a4,'0.81E2',4(8)>]=>nil, 
["2009-08-18", #<BigDecimal:87e108c,'0.8100167224 08027E2',20(20)>]=>nil, 
["2009-08-19", #<BigDecimal:87e0f74,'0.8100543478 26087E2',20(20)>]=>nil}, 
{["2009-08-14", #<BigDecimal:87dd16c,'0.81E2',4(8)>]=>nil, 
["2009-08-15", #<BigDecimal:87dd054,'0.8100081168 83117E2',20(20)>]=>nil, 
["2009-08-17", #<BigDecimal:87dcf3c,'0.81E2',4(8)>]=>nil, 
["2009-08-18", #<BigDecimal:87dcd0c,'0.8100167224 08027E2',20(20)>]=>nil, 
["2009-08-19", #<BigDecimal:87dc8fc,'0.8100543478 26087E2',20(20)>]=>nil}] 

每个散列是不同的电话。将这些平均值进行平均的最佳/最快方式是什么?

回答

1

你真的需要自己拿电话,还是只是寻找平均值?

如果您在用户和手机之间设置了has_many,则可以执行以下操作。

user.phones.average(:call_count) 

(显然,你需要在那里更换您的真实字段名。)

,将产生类似这样的查询:

SELECT avg(`phones`.call_count) AS avg_call_count FROM `phones` WHERE (`phones`.user_id = 1) 
+0

不幸的是,这样我的数据库建立,我必须像上面那样得到平均水平。 – Ryan 2009-08-19 17:42:09

+0

你能清理你上面的哈希数组吗?目前还不清楚你正在尝试平均的价值。 – jdl 2009-08-19 19:00:57