Я бы справился с этим немного по-другому: я бы обработал данные, чтобы они были в лучшем формате, и создал бы лист из этих данных.
sheet_data = Hash.new([])
r.round_matches.each do |m|
m.round_matches_team.each do |mt|
sheet_data[mt.round_id] << mt.team_name
end
end
sheet_data.each do |round_id, teams|
sheet.add_row [round_id, *teams]
end
Объяснил: я сгенерирую хэш с ключом asround_id
и в качестве значения массив, содержащий собранные имена команд. Затем, при добавлении строки, я использую оператор splat (*), чтобы убедиться, что каждое имя команды получит отдельный столбец.
Вы можете даже отсортировать имена команд, если это имеет больше смысла, прежде чем использовать сплат или вместо *teams
, использовать что-то вроде teams.sort.join(", ")
, чтобы объединить все команды в один столбец (если хотите /предпочтительно).