【问题标题】:Can you _remove_ a variant from ActiveStorage?你能从 ActiveStorage 中删除一个变体吗?
【发布时间】:2019-02-22 15:20:38
【问题描述】:

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

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

如何清理这些,不占用存储空间?我找不到任何 ActiveStorage API 来删除变体。

【问题讨论】:

    标签: ruby-on-rails rails-activestorage


    【解决方案1】:

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

    【讨论】:

    • variants 文件夹在哪里?
    • @james 如果您使用的是谷歌云存储,它位于存储桶的根目录。
    【解决方案2】:

    您可以 delete 来自 ActiveStorage 服务(磁盘、s3 等)的文件及其 key 。一个变体的key 由它的blob 和转换来识别。因此,您可以像这样删除特定变体:

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

    【讨论】:

      猜你喜欢
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 2015-05-03
      • 2020-01-16
      • 1970-01-01
      • 2023-04-11
      相关资源
      最近更新 更多