2012-07-23 155 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查詢。