Как узнать общий размер пользовательских вложений в активном хранилище - PullRequest
2 голосов
/ 27 мая 2020

Я использую Rails 6. Как получить общий размер пользовательских вложений в активном хранилище?

======

Обновление:

Если У меня есть пользователь A и пользователь B

Как получить общий размер вложений пользователя A?

Ответы [ 2 ]

2 голосов
/ 29 мая 2020

Если вы хотите получить размер всех вложений, связанных с некоторой записью (например, 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 голосов
/ 31 мая 2020

Вот как я это делаю на основе ответов @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) %>
...