これが既に存在する場合、私は見てきましたが、この正確な質問を見つけることができません。Rails、グループクエリの結果を繰り返す
私は3つのActiveRecordモデルContinent
,Country
、およびTown
があります。 Town
には属性があります。私は、各国の人口を、大陸別にグループ分けし、各町の人口を集計することで分解したいと考えています。
国の多くの町が、大陸では比較的少数の国、そして唯一のいくつかの大陸があるので、私はこのような何かやって進むかもしれません:
continents = {}
Continent.each do |continent|
country_breakdown = {}
continent.countries.each do |country|
country_breakdown[country] = country.towns.sum(:population)
end
continents[continent] = country_breakdown
end
...にcontinents
を反復処理に続いてのビュー。
問題は、これはSQLの複雑さがO(n)
であることです。ここで、n
は国の数です。
私の質問は次のとおりです。このグループ化された結果をSQLに生成させる方法はありますか?それでは、Railsのビュー側で通常のネストされたHash
のように繰り返すことができますか?
私はActiveRecord::QueryMethods#group
で作業しようとしましたが、その結果をどのように反復するのか全くわかりません。
ああ、完璧!あなたが資格を持っているので、私たちの団体は正しく定義されていなかったので、 'group'は私のために働いていませんでした。ありがとうございました! – dfaulken