2012-01-07 8 views
0

管理者のダッシュボードを作成して、管理者がサイトに関する関連する統計情報を表示しようとしています。たとえば、ある会社に多数のユーザーがいる場合、会社ごとの平均ユーザー数または企業が持つ最大ユーザー数を特定するとします。ActiveRecordの関係を関係で使用する方法

私はactiverecord :: calculationsを見つけました。これは、私が欲しいものの大部分を占めるようですが、私が知る限り、それはあなたが関係で何もすることはできません。関係によってグループ化された数や平均を見つけるにはどうしたらいいですか?

答えて

1

あなたはユーザーの観点から考える必要があります。

最も簡単な方法は、

# get a hash of company_ids and user counts 
User.group(:company_id).count 

だろう。しかし、あなたは会社をロードし、それらを一致する必要があります。

次に、あなたがしようと、

user_counts = User.group(:company_id).count 

company_users = Company.all.map{|company| user_counts[company.id]} 

# the maximum 
company_users.max 

# the average 
company_users.sum.to_f/company_users.length 
+0

これは完全に働いたおかげで行うことができます! –

関連する問題