如何避免附件 N+1

How to avoid attachment N+1

给出

class User < ApplicationRecord
  has_one_attached :avatar

  def avatar_path
    Rails.application.routes.url_helpers.rails_blob_path avatar,
                                                         disposition: 'inline',
                                                         only_path: true
  end
end

class UsersController < ApplicationController
  def index
    @users = User.all
  end
end

如何在尝试显示每个头像时避免对 active_storage_attachmentsactive_storage_blobs 的 N+1 查询?

根据 ActiveStorage's examples,您可以使用 #with_attached_A,其中 A 是附件的名称:

User.all.with_attached_avatar

同样,如果你有很多附件,你可以使用#with_attached_As