Hasta donde sé, no hay group_concat
equivalente en Rails, pero puede usar includes
para hacer eso:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
Esto producirá solo 2 consultas; lo sé, no es tan bueno como uno, pero creo que es lo mejor que Rails puede hacer sin "group_concat". La otra forma será algo así:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
Pero si hace eso, debe cambiar de acuerdo con el proveedor de su base de datos.
- MySQL :group_concat(países.nombre)
- PostgreSQL :string_agg(países.nombre, ',')
- Oráculo :listagg(países.nombre, ',')