如何查找活动存储中用户附件的总大小?

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

我在使用Rails 6.如何获取活动存储中的用户附件的总大小?

======

更新。

如果我有用户A和用户B

如何获取用户A附件的总大小?

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

如果你想获得与某条记录相关联的所有附件的大小(例如:用户A和用户B),你可以使用以下方法: 1. User.first),你可以使用这个方法。

ActiveStorage::Attachment.where(record: User.first).map(&:byte_size).sum

例如你的用户 has_many_attached :images. 在这种情况下,你可以得到这个用户的所有图像的大小为。

User.first.images.map(&:byte_size).sum

使用 include ActionView::Helpers::NumberHelper 你可以将字节大小(整数)转换为人类格式。

number_to_human_size(size_of_all_attachments)

0
投票

以下是我根据 @Yshmarov 和 @mechnicov 的回答所做的解答

在模型中

after_create_commit :add_user

private
def add_user
files.attachments.update(user_id: self.user.id)
end

在控制器中

    @checksize = ActiveStorage::Blob.where(id: current_user.id).map(&:byte_size).sum

鉴于

  <%= number_to_human_size(@checksize) %>
© www.soinside.com 2019 - 2024. All rights reserved.