2

私は3つのモデルを持っています:

  • ユーザー
  • ファイル
  • ダウンロード

Userhas_many Files, Filebelongs_toUser

Filehas_many Downloads, Downloadbelongs_toUser

allを反復処理せずにすべての a を取得してから、各ファイルに関連付けられている を取得する方法はありUserますか? (これにより、多くのクエリが生成されます)DownloadsFilesDownloads

編集

をロードする方法を見つけましたUser, it's FilesandDownloadsわずか3クエリで

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

Userしかし、既にオブジェクトを持っている場合はどうなるでしょうか?

また、ユーザーのアップロードをロードせずに、ユーザーのダウンロードをロードしたい場合はどうすればよいでしょうか? (結合を使用)

編集

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

users テーブルの主キーを直接参照してこれを行う方法はありますか?

4

1 に答える 1

4

やってみました

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