我在Rails控制器中调用了以下ActiveRecord(“filings #index”):
@filings = Filing.order("created_at DESC").limit(limit).offset(start).joins("LEFT OUTER JOIN companies ON companies.id=filings.company_id")
每份归档属于公司。我希望能够访问:
@filings.first.company
无需进行额外的SQL查询,因为这是首先完成OUTER JOIN的全部目的。但是,当我调用@ filings.first.company时,它会执行一个额外的查询:
SELECT "companies".* FROM "companies" WHERE "companies"."id" = 989 LIMIT 1
如何避免发生第二次查询?作为初始查询的结果,信息是否应该已存储?
答案 0 :(得分:1)
您需要包含数据库中的信息:
@filings = Filing.includes(:company).order("created_at DESC").offset(start).limit(limit)
给John Naegle和tharrison提示小费