考虑我有 3 个表:用户 (has_many) -> 网站 (has_many) -> 访问。如果不编写普通的 sql 代码,如何找出每个用户的总访问次数?
我有一个我不太自豪的想法,因为我让 rails 来代替 mysql 做数学:
count = 0
user.websites.each |website|
count += website.visits.count()
我是 Rails 的新手,也许我缺少一些文档。是否可以仅从查询生成器中找出该计数?
考虑我有 3 个表:用户 (has_many) -> 网站 (has_many) -> 访问。如果不编写普通的 sql 代码,如何找出每个用户的总访问次数?
我有一个我不太自豪的想法,因为我让 rails 来代替 mysql 做数学:
count = 0
user.websites.each |website|
count += website.visits.count()
我是 Rails 的新手,也许我缺少一些文档。是否可以仅从查询生成器中找出该计数?
您可以定义用户通过网站进行多次访问,如下所示:
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 查询。