我有以下三個課程
Class User < ActiveRecord
has_many :addresses
end
Class Address < ActiveRecord
belongs_to :country
end
Class Country < ActiveRecord
has_many :addresses
end
我正在嘗試通過以下命令急切加載所有嵌套的關聯記錄
User.includes(addresses: :country)
但是在rails控制臺上,只有用戶和地址被加載,而不是國家。我不確定我錯過了什么。
uj5u.com熱心網友回復:
您需要使用哈希來宣告嵌套資源的急切加載,例如
User.includes(addresses: [:country])
代替
User.includes(addresses: :country)
查看檔案
這是一個完整的作業示例(Rails 6)
class Person < ApplicationRecord
has_many :projects
end
class Company
has_many :projects
end
class Project < ApplicationRecord
belongs_to :person
belongs_to :company
end
然后,在控制臺上:
ActiveRecord::Base.logger = Logger.new(STDOUT)
me = Person.includes(projects: [:company]).find 4
Person Load (0.3ms) SELECT "people".* FROM "people" WHERE "people"."id" = $1 LIMIT $2 [["id", 4], ["LIMIT", 1]]
Project Load (0.4ms) SELECT "projects".* FROM "projects" WHERE "projects"."person_id" = $1 [["person_id", 4]]
Company Load (0.5ms) SELECT "companies".* FROM "companies" WHERE "companies"."id" IN ($1, $2, $3, $4, $5 ...)
me.projects.first.company.name
=> "my first project's customer name"
請注意,在詢問我的第一個專案的客戶名稱和生成回傳值之間沒有查詢資料庫。如果有的話,查詢將由記錄器列印,并將其輸出到STDOUT.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/497370.html
標籤:轨道上的红宝石
上一篇:Rails渦輪增壓流
