2013-06-22 2 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%> 

Проблема в том, что для каждого сообщения он будет запрашивать базу данных для отправителя сообщения. SO, если есть 20 сообщений, он отправит 20 запросов в базу данных. Как этого избежать? Я читал о загрузке Eager и :includes, но я не знаю, как применить его в этом экземпляре.

Обратите внимание, что отправитель является еще одним экземпляром класса User.

ответ