1

3 つのモデルがあるとします。

class Foo < ActiveRecord::Base
  has_many :things
end

class Thing < ActiveRecord::Base
  belongs_to :foo
  belongs_to :other_thing
end

class OtherThing
  has_many :things
end

次の行に沿ってFoo熱心にロードするにはどうすればよいですか。OtherThing

Foo.includes([:things => [:other_things]})

検索しましたが、何も見つかりません。

ありがとう

4

1 に答える 1

5

インクルードとジョインは、定義したリレーションと同じ構文を使用します。

Foo.includes(:things => :other_thing)

次の理由で機能します。

Foo has_many :things
                   ^
Thing belongs_to :other_thing
                            ^^

ただし、where 句では常に複数形を使用することに注意してください。

Foo.includes(:things => :other_thing).where(other_things: { name: 'Bobby' })
                                   ^^                 ^^
于 2013-10-21T18:20:43.243 に答える