1

假设我有三个模型:

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 回答