Desde que eu saiba, não há
group_concat
equivalente em Rails, mas você pode usar includes
fazer isso:continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
Isso produzirá apenas 2 consultas - eu sei, não é tão bom quanto uma, mas acho que é o melhor que o Rails pode fazer sem o "group_concat". A outra forma será algo assim:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
Mas se você fizer isso, precisará alterar de acordo com o fornecedor do banco de dados.
- MySQL :group_concat(países.nome)
- PostgreSQL :string_agg(países.nome, ',')
- Oráculo :listagg(países.nome, ',')