使用 Ruby on Rails 創建 Web 應用程式。
就在這中間出現了N 1的問題,我試過eager_load,但是沒有解決問題。
如果您能告訴我解決方案,我將不勝感激。
# companies_controller.rb
companies = Company.with_include_users
users = User.with_include_company
companies.each do |company|
ActiveRecord::Base.transaction do
target_user = users.where(id: company.id)
pp target_user
end
end
# company.rb
has_many :users
scope :with_include_users, -> {
eager_load(:users)
}
# user.rb
belongs_to :company
scope :with_include_company, -> {
joins(:company).eager_load(:company)
}
如上所示,我們在模型和外連接中使用了eager_load。事實上,它并沒有得到解決。
uj5u.com熱心網友回復:
為了解決 n 1 問題,您可以使用includes方法直接獲取關聯物件,如果您知道必須在視圖中使用它們。
(未經測驗的代碼如下)
# companies_controller.rb
companies = Company.includes(:users)
companies.each do |company|
company.users.each do |user|
pp user
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314941.html
