包含多个belongs_to关联链(避免N + 1)

时间:2016-03-02 16:08:42

标签: sql ruby-on-rails activerecord

我有以下模型:

class Foo < ActiveRecord::Base
  has_many: :bars
end

class Bar < ActiveRecord::Base
  belongs_to: :foo
  has_many: :bazs
end

class Baz < ActiveRecord::Base
  belongs_to: :bar
end

如何在foo查询中添加baz? (类似于Baz.includes(:foo).where(condition: 'condition').map(&:foo)

1 个答案:

答案 0 :(得分:1)

你必须通过律师协会加入foo。类似于此的内容应该适用于ActiveRecord

Baz.joins(bar: :foo).where(foos: { SOME_FOO_COLUMN: 'condition' })

这将返回Baz条件为真的Foo的集合。