Ruby on rails 按集合中的一列对多个条目进行分组

Ruby on rails 按集合中的一列对多个条目进行分组,ruby-on-rails,Ruby On Rails,我在视图文件中的表中显示了一组记录,如下所示: || user || sport || # of victories || # of losses || || Jane || foo || 1 || 1 || || Jane || foo || 2 || 3 || || Jane || bar || 1 || 1 || || Jan

我在视图文件中的表中显示了一组记录,如下所示:

|| user || sport || # of victories || # of losses ||  
|| Jane || foo   ||       1        ||      1      ||  
|| Jane || foo   ||       2        ||      3      ||  
|| Jane || bar   ||       1        ||      1      ||  
|| Jane || bar   ||       2        ||      3      ||
在上面的例子中,我试图根据运动项目对结果进行分组,而不是拥有2项记录

|| Jane || foo   ||       1        ||      1      ||  
|| Jane || foo   ||       2        ||      3      || 
将有一个单独的分组,该分组当前根据我在此视图中未显示的另一列分为多个条目

|| Jane || foo   ||       3        ||      4      ||  
我一直在尝试。分组和。分组来完成这项任务,但似乎做得不对。有人能提供一些建议吗

其他信息(如需要):

表模式

create_table "records", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
 t.integer "victories"
 t.integer "losses"
 t.bigint "user_id"
 t.bigint "sport_id"
 t.datetime "created_at", null: false
 t.datetime "updated_at", null: false
 t.integer "opposition_id"
 t.index ["opposition_id"], name: "index_records_on_category_id"
 t.index ["user_id"], name: "index_records_on_user_id"
end
控制器

  def board
    @summary = Record.all.sort_by{ |i| i.user_id }
  end
看法


或使用查询,就像我在视图中放置的示例一样,但使用控制器获取数据

<% sport_records = SportRecord.group(:user_id).select(:user_id, :sport_id, "sum(victories) as total_victories", "sum(losses) as total_losses") %>
<% sport_records.each do |sr| %>
  <p><%= sr.sport.name %> | <%= sr.user.name %> | <%= sr.total_victories %> | <%= sr.total_losses %></p>
<% end %>

成功了!谢谢@iGian
<% sport_records = SportRecord.group(:user_id).select(:user_id, :sport_id, "sum(victories) as total_victories", "sum(losses) as total_losses") %>
<% sport_records.each do |sr| %>
  <p><%= sr.sport.name %> | <%= sr.user.name %> | <%= sr.total_victories %> | <%= sr.total_losses %></p>
<% end %>
SportRecord.group(:user_id, :sport_id).select(:user_id, :sport_id, "sum(victories) as total_victories", "sum(losses) as total_losses")