渴望负载间接关联Rails

尼尔

关联如下:

#app/models/pet.rb
class Pet < ActiveRecord::Base
  belongs_to :pet_store
end

#app/models/pet_store.rb
class PetStore < ActiveRecord::Base
    has_many :pets, dependent: :destroy
    has_many :employees, dependent: :destroy
end

#app/models/employee.rb
class Employee < ActiveRecord::Base
  belongs_to :pet_store
end

我想做这样的事情,这会导致N + 1错误:

@pets = Pet.where(species: "Dog").includes(:pet_store)
@pets.each do |pet|
  pet.pet_store.employees.each do |employee|
    puts employee.name
  end
end

这将导致N + 1错误,因为必须针对每个错误进行查询employee我想eager load间接关联employees但是,我不能仅仅includes(:employees)因为apet与没有直接关联employees如何才能做到这一点?

塔林东

您可以使用:

@pets = Pet.includes(:pet_store => :employees)

关于查询语言的Rails指南很棒。这是有关eager-loading文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

原则获取间接关联的对象

来自分类Dev

如何在Ruby on Rails的ActiveRecord查询中加入间接关联?

来自分类Dev

EF:如何正确渴望负载关联

来自分类Dev

EF:如何正确渴望负载关联

来自分类Dev

has_many关联中的Rails渴望负载标识符

来自分类Dev

在Rails中查询联接关联

来自分类Dev

查询Rails中的联接关联

来自分类Dev

使用Symfony2中的Doctrine ORM注释将“间接关联”实体添加为成员

来自分类Dev

带有别名的Rails查询联接关联表

来自分类Dev

Rails活动记录渴望加载不会加载关联

来自分类Dev

Rails:渴望加载三个关联的模型

来自分类Dev

渴望在多个条件下加载多个Rails关联

来自分类Dev

Prolog:从间接关系中消除循环

来自分类Dev

Prolog:从间接关系中消除循环

来自分类Dev

在Rails中创建一个简单的多对多自联接关联

来自分类Dev

如何有效地更新Rails中的关联集合(渴望加载)

来自分类Dev

用渴望的关联加载entitymanagerFactory

来自分类Dev

渴望获取和过滤关联

来自分类Dev

如何在 Rails 中自定义一个间接 has_many 关联的名称?

来自分类Dev

Rails ActiveRecord渴望加载

来自分类Dev

Rails渴望加载协会

来自分类Dev

Laravel>有限制的嵌套渴望负载

来自分类Dev

实体框架渴望负载不返回数据,延迟负载

来自分类Dev

聚合vs组合vs关联vs直接关联

来自分类Dev

我如何渴望加载多个关联?

来自分类Dev

ActiveRecord渴望加载多个belongs_to关联

来自分类Dev

通过表将渴望的加载关联起来

来自分类Dev

条件-渴望获取关联对象的属性

来自分类Dev

Rails力模型渴望负荷