我有两个模型,User
和Group
,其中组包含许多用户。如果我想用一个查询来计算各组中的用户数,我可以使用下面的SQL:在ActiveRecord中计算关联
select id, (select count(1) from users where group_id = groups.id) from groups
是否有可能与ActiveRecord的有效做到这一点?
要清楚,此查询将列出所有组ID以及每个组中的用户数量。
我有两个模型,User
和Group
,其中组包含许多用户。如果我想用一个查询来计算各组中的用户数,我可以使用下面的SQL:在ActiveRecord中计算关联
select id, (select count(1) from users where group_id = groups.id) from groups
是否有可能与ActiveRecord的有效做到这一点?
要清楚,此查询将列出所有组ID以及每个组中的用户数量。
您可以使用获得数
利用协会
group = Group.find(1) #find group with id = 1
group.users.count # count users whose group_id = 1 calls db everytime
or
group.users.size # get size from cache if group.users loaded
或直接
User.where(:group_id=>1).count
计数帮手触发一个COUNT(*)查询上具有指定c的数据库onditions在 http://apidock.com/rails/ActiveRecord/Calculations/count
检查更多的选择也是我建议你去通过rails guides
我发现了一个有效的解决方案使用连接:
Group.all(
:select => "groups.id, count(u.group_id) as users_count",
:joins => "LEFT OUTER JOIN users u ON u.group_id = groups.id",
:group => "groups.id"
)
我不清楚,我想知道如何得到这个一次计入所有组。 – 2012-08-03 21:41:36