2013-02-12 73 views
0

我有一個model具有以下屬性:結合GROUP_BY和總和

user_id,  week_id,  project_id,  hours 
1         61         1             20 
1         62         1              5 
1         61         2             15 
1         63         1              0 
2   61   1    0 

view這個樣子的:

<tr> 
61 | 62 | 63 (week_id) 
35 | 5  | 0 (Sum of hours per week_id) 
</tr> 

all_hours = Model.group_by(&:user_id) 
@all_hours.each do |user, hours| %> 
<tr> 
hours.each do | hour | 
hour.my_hours 

,給我的user 1

兩行如何組第二次&將每週week_id的小時數加起來得到想要的結果?

爲了更清楚(希望):

@hours= Model.all.group_by(&:user_id) 
<% @hours.each do |user, hours| %> 

<tr> 
    <% hours.each do |h|%> 
     <td><%= h.hours%></td> 
    <% end %> 
</tr> 

給了我一個排很長的每個用戶,如: 0.0 20.0 0.0 .... 0.0 15.0 0.0 現在我要總結的20和15 這條線內 0.0 35.0 0.0

回答

0

我想給這個與軌道3一試:

Model.select(:week_id). 
    select(Model.arel_table[:hours].sum.as("sum_of_hours")).select(:user_id) 
    group(:week_id).group(:user_id) 

這裏使用的庫是arel,是rails 3 activerecord的一部分。

我會假設這是有效的。但我自己並沒有嘗試過。希望這可以幫助。

+0

我試過這個..感謝..總結了每週week_id的所有時間。但我需要爲每個用戶每週week_id顯示這些小時數。 – Werner 2013-02-13 07:59:56

+0

感謝Gaurav ..這個工作就像它應該 – Werner 2013-02-14 08:45:53

+0

@Werner如果它幫助你,併爲什麼你沒有批准答案? http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – gotva 2013-12-04 13:00:46