您可以从ActiveStorage中删除一个变体吗?

时间:2018-09-18 14:40:44

标签: ruby-on-rails rails-activestorage

在Rails中使用ActiveStorage,在创建变体时会“按需”添加变体。它们现在保存在某些存储中(磁盘,S3,谷歌云等)。

如果您意识到毕竟不需要某些变体,并更改代码以不调用它们……我认为它们仍将保留在存储中。

一个人如何清理它们,使它们不占用存储空间?我找不到任何ActiveStorage API来删除变体。

2 个答案:

答案 0 :(得分:4)

您可以delete来自ActiveStorage服务(磁盘,s3等)的文件及其key。变体的key通过其斑点和变换来识别。因此,您可以删除特定的变体,如下所示:

avatar = user.avatar
variant = avatar.variant(resize: '100x100')
avatar.service.delete(variant.key)

答案 1 :(得分:1)

如果再次生成所有变体的成本是可以接受的,或者您需要使大多数变体无效,则只需删除 variants 文件夹。 Rails将在需要时再次生成变体。