2013-09-04 4 views
0

В этом простейшей форме ...Посев Carrierwave от внешнего процесса

Я использую Carrierwave в приложении к автоматической загружать изображения, которые существуют на внешних сайтах так, чтобы поместить в небольшую нагрузку на них, как это возможно. В первый раз, когда я хочу отобразить изображение, я запускаю Carrierwave для загрузки.

В db размещен указатель изображения, написанный на фоне процесса Java. Затем в Ruby я назначаю почтовый url «remote_image_url» и сохраняю! чтобы загрузить и управлять версиями. Все это прекрасно работает.

Однако мне нужно сохранить поле в db, которое сообщает, была ли запущена загрузка, чтобы я не запускал ее каждый раз, когда изображение отображается. Как узнать, загружено ли «изображение»? Поле «изображение» на самом деле является Uploader, есть ли метод, который скажет мне, был ли он запущен?

ответ

1

Carrierwave загружает удаленный файл, как только вы назначаете его через model.remote_image_url=, и он перемещает файл в свое конечное местоположение (локальное хранилище, S3 и т. Д.), Как только вы вызываете model.save. Это происходит синхронно, поэтому, если model.save завершен, и не было ошибки, ваш файл был сохранен.

Иными словами, если вы только что загрузили модель из базы данных, а model.image? - это правда, то model.image.url должен быть рабочим URL-адресом.

+0

Проверка 'model.image?' Работает, я могу удалить флаг из db – pferrel

Смежные вопросы