2

我有三个模型:

  • 用户
  • 文件
  • 下载

Userhas_many Files,File属于_toUser

Filehas_many Downloads,Download属于_toUser

有没有办法检索所有 a UserDownloads而不遍历 all Files,然后检索Downloads与每个文件关联的?(这会产生很多查询)

编辑

我找到了一种加载 的方法,User它只是 3 个查询FilesDownloads

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

但是,如果我已经有一个User对象怎么办?

如果我只想加载用户下载而不加载他们的上传怎么办?(使用连接)

编辑

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

有没有办法直接引用用户表的主键?

4

1 回答 1

4

你有没有尝试过

class User
  has_many :downloads, :through => :files
end
于 2012-08-09T23:43:53.480 回答