CarrierWave, как изменить путь к объекту после загрузки - PullRequest
2 голосов
/ 31 марта 2020

Мне нужно продублировать модель, которая содержит изображение CarrierWave, но мне нужно использовать тот же файл изображения, проблема в том, что мой путь к файлу использует UUID модели и после сохранения нового объекта UUID изображения также обновляется .

Как изменить путь к файлу изображения после сохранения объекта, чтобы сохранить исходный путь к изображению?

Это мое изображение хранится в aws:

@mounted_as=:my_cover, @storage=#<CarrierWave::Storage::Fog:0x0000000002ef @uploader=#<CoverUploader::Uploader82999640:0x0000000002ef ...>>, @file=#<CarrierWave::Storage::Fog::File:0x0000000002ef @uploader=#<CoverUploader::Uploader82999640:0x0000000002ef

Я могу получить доступ к Model.my_cover.file.path или Model.my_cover.cover.path, но не могу изменить значение пути.

Я не хочу дублировать изображение потому что это удвоит пространство для хранения файлов.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 31 марта 2020

При дублировании объекта вы должны иметь возможность скопировать изображение с предыдущего объекта перед сохранением нового. Допустим, ваша модель называется Model и имеет атрибут изображения с именем my_cover .

a = Model.new
b = a.dup

b.my_cover = a.my_cover
b.save

Carrierwave использует объект изображения, который ссылается на URL-адрес изображения, и вы можете скопировать в другой объект.

...