У меня есть коллекция записей, которую я показываю в таблице в файле представления, которая выглядит следующим образом:
|| user || sport || # of victories || # of losses ||
|| Jane || foo || 1 || 1 ||
|| Jane || foo || 2 || 3 ||
|| Jane || bar || 1 || 1 ||
|| Jane || bar || 2 || 3 ||
В приведенном выше примере я пытаюсь сгруппировать результаты по виду спорта,так что вместо двух записей
|| Jane || foo || 1 || 1 ||
|| Jane || foo || 2 || 3 ||
будет одна группа, которая в настоящее время разбита на несколько записей на основе другого столбца, который я не отображаю в этом представлении.
|| Jane || foo || 3 || 4 ||
Я пытался это сделать .group и .group_by, но, похоже, я делаю это неправильно.Может кто-нибудь, пожалуйста, укажите несколько указателей
Дополнительная информация, если необходимо:
Схема таблицы
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
Просмотр
<% @summary.each do |record| %>
<tr>
<td><%= record.user.name %></td>
<td><%= record.sport_id %></td>
<td><%= record.victories %></td>
<td><%= record.losses %> </td>
</tr>
<% end %>