考虑我有3个表:用户(has_many) - >网站(has_many) - >访问。 如何在不编写简单的sql代码的情况下找出每个用户拥有的访问总数?
我有一个想法,我不是很自豪,因为我让rails做数学而不是mysql:
count = 0
user.websites.each |website|
count += website.visits.count()
我是rails的新手,也许我错过了一些文档。是否可以仅从查询构建器中找出该计数?
答案 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查询。