1

我有 # 的 Item 对象has_many_attached :photos。我的活动存储服务是 GCS。我为 Item 创建了一个#thumbnail() 实例方法。像这样:

def thumbnail(photo)
    photo.variant(resize_and_pad: [400, 400, gravity: 'center', background: '#3D4453'])
end 

我在项目 show.html.erb 文件中将其称为:

 <% @item.photos.each do |photo| %>
    <%= image_tag(@item.thumbnail(photo)) %>
<% end %>

然而,这会导致调整大小的照片上传到 GCS 存储桶中。所以我最终在我的桶中得到了正常尺寸的照片和调整大小的照片。我怎样才能避免这种情况?

4

1 回答 1

1

根据 ActiveStorage文档variants将变体上传到您正在使用的存储服务(在本例中为 GCS)的预期行为,然后返回变体 URL 以在您的应用程序中使用:

这将检查变体是否已被处理并上传到服务,如果是,则将其返回。否则它将执行转换,将变体上传到服务,然后再次返回自身。

该相关线程探讨了具有变体和原始文件的这种行为,并且归结为构建功能以删除变体文件,因为 API 似乎不支持它。为了删除特定的变体文件,this other question解决了这个问题。

于 2021-11-24T21:02:13.083 回答