簡體   English   中英

Eager Load間接關聯Rails

[英]Eager Load indirect associations 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)因為petemployees沒有直接聯系。 如何才能做到這一點?

你可以用:

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

查詢語言的Rails指南很棒。 這是關於渴望加載文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM