Сохранение файлов с использованием Carrierwave без форм - PullRequest
3 голосов
/ 28 февраля 2011

У меня есть 2 модели - Album и AlbumImage.

С каждым альбомом связаны изображения альбомов, и они загружаются через класс AlbumImageUploader с использованием Carrierwave.

Теперь я хочу выбратьобложка альбома для каждого альбома с использованием существующих связанных изображений альбома.Мне нужно обработать (обрезать и изменить размер) это выбранное изображение, прежде чем использовать его в качестве обложки альбома.У меня отключены функции обрезки и изменения размера, и я создал класс AlbumCoverUploader для сохранения этой обработанной версии изображения альбома в.

Проблема в том, что на этот раз я не использую форму для загрузки нового изображенияфайл и вместо этого использовать существующее изображение альбома в файловой системе, и я не уверен, как перенести это изображение из моего класса AlbumImageUploader в мой класс AlbumCoverUploader.

Есть идеи?

1 Ответ

1 голос
/ 11 сентября 2012

Это действительно просто. Вы должны настроить свой AlbumCoverUploader так же, как если бы вы загружали его из формы.

Однако, чтобы использовать изображение, связанное с существующей записью, вы должны сделать следующее:

album = Album.find(id)                  # your existing album
album_image = album.album_images.first  # the image you want as cover
album.cover = File.open(album_image.image.current_path)
album.save

Это позволит получить файл изображения и использовать его как вход для AlbumCoverUploader для создания собственной копии изображения.

...