在我的用户模型中:
class User < ActiveRecord::Base
has_many :received_messages
:foreign_key => 'recipient_id
end
在我的消息控制器的索引操作中,我有:
@messages = current_user.received_messages
在我看来(实际代码的较短版本):
<% @messages.each do |message| %>
<%= message.sender.full_name %><br>
<%= truncate(message.body, :length => 50) %>
<%end%>
问题是对于每条消息,它都会查询数据库中的消息发送者。所以如果有 20 条消息,它将向数据库发送 20 个请求。我该如何避免呢?我一直在阅读有关 Eager loading and的内容:includes
,但我不知道如何在这种情况下应用它。
请注意,sender 只是 User 类的另一个实例。