【问题标题】:Rails 5 Active Storage: Is there a more efficient way of displaying multiple image attachments?Rails 5 Active Storage:是否有更有效的方式显示多个图像附件?
【发布时间】:2019-04-01 14:46:40
【问题描述】:

我有一个名为 Job 的模型。它有一个 Active Storage 附件。

class Job < ApplicationRecord
  # ...
  has_one_attached :image
end

我最终会对结果进行分页,但目前,JobsController#index 返回所有作业:

class JobsController < ApplicationController
  def index
    @jobs = Job.all
  end
end

由于所有 2000 个种子行都显示在索引页面上,我可以看到加载所有图像需要很长时间。

<% @jobs.each do |job| %>
<div class="listing">
  <div class="image">
    <%= image_tag url_for(job.image) %>
  </div>
  ...
</div>

最终,我只打算一次显示 50 个左右,但这让我想知道是否没有更有效的方式来加载多个图像。

我需要采取哪些步骤来确保快速交付图像并且将应用程序的压力降至最低?我是否以最有效的方式进行操作?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 rails-activestorage


    【解决方案1】:

    Rails 有一种方法可以一次检索所有关联。它被称为“急切加载”,在您的情况下,它看起来像这样:

    @jobs = Job.with_attached_image.all
    

    这会抓取所有已附加图像的@jobs。这是一个特殊情况,因为它使用 Rails has_one_attached 模型属性。通常,我们处理预加载嵌套关联,例如:

    @jobs.includes(:image)
    

    来源:Rails Eager Loading

    预加载将使您的查询更简单、更快捷。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 2019-01-01
      • 2019-11-01
      • 2021-05-23
      • 1970-01-01
      • 2019-07-13
      • 2020-09-03
      • 1970-01-01
      相关资源
      最近更新 更多