2013-06-22 156 views
0

在我的用戶模型:Rails的:優化查詢數據庫的has_many關係

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加載和:includes,但我不知道如何應用它在這種情況下。

請注意,發件人只是User類的另一個實例。

回答