如何使用ActiveRecord计算与关系

时间:2012-01-07 22:51:10

标签: ruby-on-rails activerecord

我正在尝试创建一个管理信息中心,显示有关该网站的管理员相关统计信息。例如,给定一家公司有很多用户,找到每家公司的平均用户数,或公司拥有的最大用户数。

我找到了activerecord ::计算,这似乎完成了我想要的大部分工作,但据我所知,它不会让你对关系做任何事情。我如何找到按关系分组的计数或平均值?

1 个答案:

答案 0 :(得分: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