Найти общий объем хранилища вложений дочерних ресурсов - Скрепки для бумаг

Я строю приложение рельсы, которое имеет модели Users, Album (как в фотоальбоме) и PhotoВложены в таком порядке. Я хочу, чтобы можно было найти общий объем памяти, используемый альбомами пользователя.

От Album Уровень, я могу найти общий объем памяти, используемый фотографиями в этом альбоме. то есть:

album = Album.first

album.photos.sum(:image_file_size)

Но я хочу быть в состоянии сделать это из User уровень для фотографий всех альбомов.

Есть ли элегантный способ сделать это?

Спасибо!

1 ответ

Решение

Предполагая, что каждый User имеет много Albums и каждый Album имеет много Photos, Вы можете получить общий объем памяти, использованный для первого User используя приведенное ниже утверждение.

User.find(1).albums.map(&:photos).flatten.pluck(:image_file_size).sum
Другие вопросы по тегам