rails 3查询嵌套资源上的count

时间:2012-07-23 21:32:32

标签: ruby-on-rails-3

考虑我有3个表:用户(has_many) - >网站(has_many) - >访问。 如何在不编写简单的sql代码的情况下找出每个用户拥有的访问总数?

我有一个想法,我不是很自豪,因为我让rails做数学而不是mysql:

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

我是rails的新手,也许我错过了一些文档。是否可以仅从查询构建器中找出该计数?

1 个答案:

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