2012-07-23 153 views
1

考虑我有3个表:用户(has_many) - >网站(has_many) - >访问。 如何在不编写普通的sql代码的情况下找出每个用户的访问总数?rails 3查询嵌套资源计数

我有一个想法,其中我不是因为我让轨道做数学题,而不是MySQL的的很得意:

count = 0 
user.websites.each |website| 
    count += website.visits.count() 

我是新护栏及也许我错过了一些文档。是否有可能从查询构建器中找出这个计数?

回答

0

您可以定义用户通过该网站很多这样的访问量:

class User < ActiveRecord::Base 
    has_many :websites 
    has_many :visits, :through => :websites 
end 

现在,如果你这样做

some_user.visits.count

这个SQL被执行:

(0.4ms) SELECT COUNT(*) FROM "visits" INNER JOIN "websites" ON "visits"."website_id" = "websites"."id" WHERE "websites"."user_id" = 1 
=> 8 

也就是说,ActiveRecord会为您创建SQL查询。