3

我有以下关联

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 多个查询。我究竟做错了什么?如何避免对用户进行个别查询?

4

1 回答 1

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
于 2013-07-03T15:16:33.467 回答