1

我在 Rails 控制器(“filings#index”)中有以下 ActiveRecord 调用:

@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

如何避免发生第二个查询?作为初始查询的结果,信息不应该已经存储了吗?

4

1 回答 1

1

您需要包含数据库中的信息:

@filings = Filing.includes(:company).order("created_at DESC").offset(start).limit(limit)

向约翰·内格尔和塔里森致敬

于 2012-11-29T17:15:10.297 回答