2012-08-09 148 views
2

我有三個型號:檢索結果

  • 用戶
  • 文件
  • 下載

User的has_many FilesFile belongs_to的User

File的has_many DownloadsDownload belongs_to的User

有什麼辦法來檢索全部UserDownloads,沒有通過所有Files迭代,然後檢索與每個文件相關聯的Downloads? (這將產生大量的查詢)

編輯

我發現加載User的方式,它是FilesDownloads在短短3查詢

user = User.includes(:uploads => [:downloads]).find(1) 

但是,如果我已經有一個User對象?

如果我只是想加載用戶下載而不加載他們的上傳呢? (使用連接)

編輯

Download.joins(:upload => :user).where(:users => { :id => user.id }) 

是否有這樣做具有參考用戶表的主鍵,直接的一種方式?

回答

4

你試過

class User 
    has_many :downloads, :through => :files 
end 
+0

太好了,謝謝。 – 2012-08-10 00:12:54