2012-01-07 43 views
0

我試圖製作一個管理員儀表板,顯示管理員相關的網站統計信息。例如,考慮到公司有許多用戶,需要查找每家公司的平均用戶數量或公司擁有的最大用戶數量。如何在關係中使用ActiveRecord計算

我發現activerecord :: calculation,這似乎是我想要的大部分,但據我所知,它不會讓你對關係做任何事情。我將如何去尋找按關係分組的數量或平均數?

回答

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

這完美地工作,謝謝! – 2012-01-09 20:48:59

相關問題