gpt4 book ai didi

ruby-on-rails - Eager Load 间接关联 Rails

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:48 39 4
gpt4 key购买 nike

协会如下:

#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 指南非常棒。这是 docs on eager-loading .

关于ruby-on-rails - Eager Load 间接关联 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31237939/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com