【问题标题】:Rails 6 + Ruby 2.7 - How can I track my videos/images uploads size so that I know total how much of MB files have been uploadedRails 6 + Ruby 2.7 - 我如何跟踪我的视频/图像上传大小,以便我知道总共上传了多少 MB 文件
【发布时间】:2021-04-29 08:18:39
【问题描述】:

我的 Rails 6 应用使用 ruby@2.7carrierwave 上传图片和视频。 在这里,我正在寻找类似于我们的基本 Rails counter_cache 机制的东西,它可以帮助我跟踪用户上传的总大小和到目前为止剩余的总大小

Rails 应用程序为每个用户提供了 1GB 的默认大小来上传图像/视频(上传到 S3),因此也有必要跟踪和维护每个上传大小,以便这种机制将有助于警告用户他已经消耗了给定的限制以及为他消耗/剩余的大小。

到目前为止我做了什么!

每个user has many 图片和视频。 因此,在每次上传时,我都会在每个 *_uploader.rb 类中触发回调以获取 total file size添加它与 user.total_size_consumed 中已经存在的前一个,默认值为 0。

只是想知道是否有任何其他方法可以实现相同的效果,因为我也需要实现转换(MB/GB/TB)。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-5 carrierwave


    【解决方案1】:

    您有上传项目类和表吗?您应该在该表中添加一个字段 upload_size 并使用回调在其中存储上传大小。

    这意味着当用户删除上传时,您可以通过在项目模型中使用 before_destroy 回调来减少他上传的总大小。

    您还可以相当轻松地为用户重置上传的总大小...只是所有上传项目的upload_size 的总和。

    【讨论】:

    • 如果我采用这种方法,那么我还必须向所有关键区域添加回调,例如 - 当用户上传、删除/更新任何上传的项目时,当用户更改他的功能以增加限制时,然后再一次必然会发生一系列更新......一旦应用程序变得庞大,这将变得非常难以管理。有什么方法可以以高级方式解决这个问题......就像任何服务/中间件......来处理它?
    • 我没看到。如果您只允许他创建(上传新文件)和销毁(删除现有文件),那么您将被两个回调覆盖。如果他改变限制,那又如何?它不会改变total_file_size。我假设如果减少了你不会删除他的上传,所以他会有一个负津贴。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多