Så länge jag vet finns det ingen group_concat
motsvarande i Rails, men du kan använda includes
för att göra det:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
Detta kommer att producera endast 2 frågor - jag vet, är inte så bra som en, men jag tror att det är det bästa än Rails kan göra utan "group_concat". Det andra sättet kommer att vara något liknande:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
Men om du gör det måste du ändra enligt din databasleverantör.
- MySQL :group_concat(countries.name)
- PostgreSQL :string_agg(countries.name, ',')
- Oracle :listagg(countries.name, ',')