我有兩個模型,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