CarrierWave下载后如何更改对象路径

CarrierWave how to change object path after downloaded

我必须复制一个包含 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 但我无法更改路径值。

我不想复制图像,因为这会使文件存储空间翻倍 space。

感谢您的帮助!

复制对象时,您应该能够在保存新对象之前复制前一个对象的图像。 假设您的模型名为 Model 并且具有名为 my_cover.

的图像属性
a = Model.new
b = a.dup

b.my_cover = a.my_cover
b.save

Carrierwave 使用引用图像的图像对象 URL,您可以将其复制到其他对象。