如何完全删除特定附件的所有变体(但不是原始上传),这意味着:
- 所有
ActiveStorage
表中的所有DB记录,以及 - 文件夹
/storage
)中的所有相关文件?
模型方案是:Avatar has_one_attached :file
我试过...
ActiveStorage::VariantRecord.where(blob_id: @avatar.file.blob.id).destroy_all
.但这显然既不删除表active_storage_blobs
中的条目,也不删除文件夹/storage
中的相关文件。
(上下文:我需要在从原始上传的文件重新创建“旧”变体之前销毁它们,因为Rails显然不会自动替换“旧”变体。
2条答案
按热度按时间r55awzrz1#
只需在给定附件上调用
ActiveStorage::Attached::One#purge
这直接清除附件(即,销毁blob和附件以及所有变体,并删除服务上的文件)
pbossiut2#
这将删除您想要刷新的变体: