即使在急切加载之后,belongs_to关联也会单独加载

时间:2013-07-03 14:53:41

标签: ruby-on-rails performance ruby-on-rails-3.2 eager-loading

我有以下关联

class Picture < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :pictures
end

在我的PicturesController中,我渴望加载用户

class PicturesController < ApplicationController
  def index
    @pictures = Picture.includes(:user).all
  end
end

在我看来,我正在显示每个图片的用户名

-@pictures.each do |picture| 
  %tr
    %td= picture.name
    %td= picture.user.name

现在问题是,即使我急于加载用户,我也会在视图中显示用户名时看到个别查询。

我有大约1000张图片记录,我为此请求触发了超过1000个查询。 我究竟做错了什么?如何避免用户的个别查询?

1 个答案:

答案 0 :(得分:0)

如果您只显示用户名,那么如何在查询中抓取它以及内连接呢?

查询:

@pictures = Picture.select("pictures.*, users.name as user_name").joins(:user).all

查看:

- @pictures.each do |picture| 
  %tr
    %td= picture.name
    %td= picture.user_name