Setahu saya, tidak ada group_concat
setara di Rails, tetapi Anda dapat menggunakan includes
untuk melakukan itu:
continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")
continents.each do |continent|
continent.countries.join(",")
end
Ini hanya akan menghasilkan 2 kueri - saya tahu, tidak begitu bagus, tapi saya pikir itu yang terbaik daripada yang bisa dilakukan Rails tanpa "group_concat". Cara lain akan menjadi seperti itu:
Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")
Tetapi jika Anda melakukannya, Anda perlu mengubahnya sesuai dengan vendor database Anda.
- MySQL :group_concat(nama negara)
- PostgreSQL :string_agg(nama negara, ',')
- Oracle :listagg(nama negara, ',')