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个字符请确认

希望这有帮助