Zolang ik weet, is er geen group_concat
equivalent in Rails, maar u kunt includes
. gebruiken om dat te doen:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
Dit zal slechts 2 queries opleveren - ik weet het, is niet zo goed als één, maar ik denk dat dat het beste is dan Rails kan doen zonder "group_concat". De andere manier zal zoiets zijn:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
Maar als u dat doet, moet u zich aanpassen aan uw databaseleverancier.
- MySQL :group_concat(country.name)
- PostgreSQL :string_agg(landen.naam, ',')
- Oracle :listagg(landen.naam, ',')