ruby on rails - Combining group_by and sum



我有一个具有以下属性的model

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

如何分组第二次&把每周的小时数加起来得到想要的结果?

为了更清楚(希望如此):

@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

我会尝试一下rails 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的一部分。

我认为这是可行的。但我自己还没试过。希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新