Доколкото знам, няма group_concat
еквивалент в Rails, но можете да използвате includes
за да направите това:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
Това ще произведе само 2 заявки - знам, не е толкова добро като една, но мисля, че това е най-доброто, което Rails може да направи без "group_concat". Другият начин ще бъде нещо подобно:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
Но ако направите това, трябва да промените според доставчика на вашата база данни.
- MySQL :group_concat(страни.име)
- PostgreSQL :string_agg(countries.name, ',')
- Oracle :listagg(countries.name, ',')