我使用的是Paperclip gem:https://github.com/thoughtbot/paperclip
我现在正在使用Carrierwave:https://github.com/carrierwaveuploader/carrierwave
我的制作网站目前正在使用Paperclip。我将更新生产网站以使用Carrierwave。
Paperclip上传的文件夹结构与Carrierwave不同。
我也在使用Amazon S3来存储上传内容。
我想知道是否有办法将使用Paperclip上传的制作文件转换为Carrierwave。
例如,在制作中使用Paperclip时,我现在有类似以下内容的简历:
BUCKET_NAME /模型名称/恢复/ 000/000 / MODEL_ID /原始/检验.pdf
使用Carrierwave应该是:
BUCKET_NAME /上传/模型名称/恢复/ MODEL_ID /原始/检验.pdf
现在看来我必须手动进行此转换。我想知道是否有更好的方法。
请告知。
答案 0 :(得分:3)
CarrierWave::Compatibility::Paperclip
模块已提供此功能。只需在您的上传器中执行以下操作:
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
答案 1 :(得分:0)
您是否尝试更改了载波上传器中定义的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个字符请确认
希望这个帮助