关联如下:
#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
。如何才能做到这一点?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句