Rails Carrierwave S3 как отдать определенный файл если запрашиваемый файл на сервере не найден?
Здравствуйте
Ситуация следующая: в целях экономии хочу изменить жизненный цикл фотографий загружаемых на s3 до 3 месяцев. Но при этом я не хочу на Rails сервере удалять сущности. Есть ли просто вариант проверять при отображении фотографии с s3 её наличие и при отсутствии отображать заранее подготовленный макет "Фотография удалена" ? Подскажите решение.
Да спасибо. Но только эта проверка ляжет на сторону сервера, т.е. он будет проверять по каждой фотографии наличие ещё на сервере, есть ли вариант эту проверку вынести на сторону Amazon ?
Руслан Галиев: Это можно сделать только если захостить сайт на S3 и включить редирект на какой-то файл в случае 404 ошибки. Но т. к., carrierwave работает с S3 по REST API, то там такого сделать нельзя.
"Фотография удалена" лучше хранить локально. Сделать какой-нибудь метод-обертку над image.url и проверять в нем ещё и image.file.exists?, если файл не существует, то возвращать урл на "Фотография удалена" и обнулять поле image. Обнулять нужно, чтобы сразу было видно, что файл с S3 удален и нужно вернуть локальный файл. Ну и ещё можно сделать проверку, что фотка создана более 3 месяцев назад (created_at в БД), чтобы лишний раз не делать запрос на S3.