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 に答える