Rails将Paperclip目录结构转换为Carrierwave
我使用的是Paperclip gem: https : //github.com/thoughtbot/paperclip
我现在正在使用Carrierwave: https : //github.com/carrierwaveuploader/carrierwave
我的制作网站目前正在使用Paperclip。 我将更新生产网站以使用Carrierwave。
Paperclip上传的文件夹结构与Carrierwave不同。
我也使用Amazon S3来存储上传。
我想知道是否有办法将使用Paperclip上传的生产文件转换为Carrierwave。
例如,在制作中使用Paperclip时,我现在有类似以下内容的简历:
BUCKET_NAME / MODEL_NAME /恢复/ 000/000 / MODEL_ID /原厂/检验.pdf
使用Carrierwave它应该是:
BUCKET_NAME /上传/模型名称/恢复/ MODEL_ID /原厂/检验.pdf
现在看来我必须手动进行这种转换。 我想知道是否有更好的方法。
请指教。
CarrierWave::Compatibility::Paperclip
模块已经提供了此function。 只需在您的上传器中执行以下操作:
class MyUploader < CarrierWave::Uploader::Base include CarrierWave::Compatibility::Paperclip # The :id_partition symbol will trigger a proc in the Paperclip compatibility module that will build out the properly partition directory structure def store_dir "#{model.class.to_s.underscore}/#{mounted_as.to_s}/:id_partition" end end
您是否尝试过更改store_dir
上传器中定义的store_dir
选项,使其看起来与store_dir
完全相同
def store_dir "#{model.class.to_s.underscore}/resume/#{id_partitioning}/original/" end def id_partitioning ("%09d" % model.id).scan(/.{3}/).join("/") end
注意:我刚刚记得回形针如何进行id_partitioning
(根据对象id向左边填充多少’0’)
但根据你的格式000/000/model_id
看起来像9个字符请确认
希望这有帮助