Per quanto ne so, non esiste group_concat
equivalente in Rails, ma puoi usare includes
per farlo:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
Questo produrrà solo 2 query - lo so, non è così buono come uno, ma penso che sia il meglio di quanto Rails possa fare senza "group_concat". L'altro modo sarà qualcosa del genere:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
Ma se lo fai, devi cambiare in base al fornitore del tuo database.
- MySQL :gruppo_concat(nome.paesi)
- PostgreSQL :string_agg(nome.paesi, ',')
- Oracolo :listagg(nome.paesi, ',')