Rails ActiveStorage:如何完全删除特定附件的所有变体(所有 ActiveStorage DB 记录和文件)

问题描述 投票:0回答:1

如何完全删除(特定附件的)所有变体,意思是:

  • 所有
    ActiveStorage
    表中的所有数据库记录,AND
  • 文件夹中所有关联的文件
    /storage
    )?

模型场景为:

Avatar has_one_attached :file

我已经尝试过...

ActiveStorage::VariantRecord.where(blob_id: @avatar.file.blob.id).destroy_all

...但这显然既不会删除表中的条目

active_storage_blobs
,也不会删除文件夹中的相关文件
/storage

(上下文:我需要在重新创建“旧”变体之前销毁它们,因为 Rails 显然不会自动替换“旧”变体。)

ruby-on-rails rails-activestorage
1个回答
0
投票

只需在给定的附件上拨打

ActiveStorage::Attached::One#purge

@avatar.file.purge

这会直接清除附件(即销毁包含所有变体的 blob 和附件并删除服务上的文件)

© www.soinside.com 2019 - 2024. All rights reserved.