2009-08-19 178 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