【发布时间】:2015-07-06 04:47:29
【问题描述】:
关联如下:
#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),因为pet 与employees 没有直接关联。如何做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby activerecord