:是否包含ActiveRecord实例的工作?

Ant*_*ric 6 activerecord ruby-on-rails eager-loading

以下所有示例:包括for eager loading用于类级别查询.我在我的模型实例上尝试了它,它仍然发出了一堆查询 - 它是否适用于实例方法?

 #in controller
 @emails = person.sent_emails(:include => [:recipient])

 #in view
 render @emails

 # _email.html.erb partial
 <h1><%= email.recipient.name %></h1>
 <p>
 <%= email.content %>
 </p>

 #still issues a select * for emails, N+1 for recipients :/
Run Code Online (Sandbox Code Playgroud)

aNo*_*ble 3

我知道它看起来有点像 Rails 2,可能有更好的 Rails 3 方式,但这确实有效。

@emails = person.sent_emails.find(:all, :include => :recipient)
Run Code Online (Sandbox Code Playgroud)

编辑:请参阅 BaroqueBobcat 的评论,了解 Rails 3 中更好的方法

  • 您可以使用 `sent_emails.all(:include =&gt; :recipient)` (3认同)