有没有办法避免过多的ActiveRecord呼叫?

时间:2012-11-29 15:54:31

标签: ruby-on-rails ruby-on-rails-3 activerecord

我在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

如何避免发生第二次查询?作为初始查询的结果,信息是否应该已存储?

1 个答案:

答案 0 :(得分:1)

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

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

给John Naegle和tharrison提示小费