使用ruby on rails访问数组内部的哈希

时间:2009-08-19 15:54:01

标签: ruby-on-rails arrays

我获得了属于用户的所有呼叫的平均值。用户可以拥有许多手机。因此,我搜索属于该用户的所有电话并平均该电话呼叫并将其添加到阵列。现在我需要将所有呼叫平均在一起。这就是回来了:

[{["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 个答案:

答案 0 :(得分:1)

你真的需要自己拿取手机,还是仅仅寻找平均值?

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

user.phones.average(:call_count)

(显然,您需要替换那里的真实字段名称。)

这将生成类似于此的查询:

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