Så længe jeg ved, er der ingen group_concat
tilsvarende i Rails, men du kan bruge includes
for at gøre det:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
Dette vil kun producere 2 forespørgsler - jeg ved, det er ikke så godt som én, men jeg tror, det er det bedste, end Rails kan gøre uden "group_concat". Den anden vej vil være sådan noget:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
Men hvis du gør det, skal du ændre i henhold til din databaseleverandør.
- MySQL :group_concat(lande.navn)
- PostgreSQL :string_agg(lande.navn, ',')
- Oracle :listagg(lande.navn, ',')