Здесь у вас очень широкий вопрос, который очень сильно зависит от общих потребностей пользователей и опыта, который вы хотите им получить.
Начну с самой простой части, касающейся временного хранения PDF. Здесь следует иметь в виду несколько вещей.
Я бы сказал, что с точки зрения масштабируемости и безопасности приложений хранение PDF в облаке - это путь. Открытие доступных для записи каталогов на вашем сервере приложений сопряжено с риском. Кроме того, если вам когда-либо понадобится масштабировать до нескольких серверов, это не будет работать. Удаление элементов из облачного хранилища несложно с соответствующими API.
Важно ли, чтобы пользователь каким-то образом проходил аутентификацию для загрузки PDF? Это более сложная задача, если вы отправляете PDF-файл в облачную корзину (если у вас нет PDF-файла с очень сложным, не угадаемым именем, это имя доступно только через приложение, прошедшее проверку подлинности). Если данные менее конфиденциальны, в уведомлении по электронной почте может быть указана прямая ссылка, но вы не сможете легко узнать, получил ли пользователь файл PDF и теперь он готов к удалению.
Что касается уведомления, я бы отправил письмо по нескольким причинам. Простота - это главное. У вас есть опыт работы с ActionCable? На первый взгляд это кажется простым, но при его использовании необходимо помнить о многих вещах: инфраструктура и пользовательский интерфейс являются основными. Кроме того, с точки зрения пользовательского опыта, могут ли пользователи зависать в приложении, ожидая завершения работы PDF? Что произойдет, если они выйдут из системы? Как они узнают, что PDF доступен?
Если временные рамки для создания PDF-файла короткие и абсолютно оптимизированная масштабируемость не имеет большого значения, вы можете рассмотреть более простой механизм, который проверяет пользовательские уведомления (например, простой запрос к таблице user_notifications) для каждого пользовательского действия, и использовать флэш-память или какой-либо другой флаг сеанса, который пользовательский интерфейс может проверить и использовать для асинхронного получения уведомления.
Просто идеи. Невозможно дать однозначные ответы.