Rails将Paperclip目录结构转换为Carrierwave

时间:2014-02-08 01:46:00

标签: ruby-on-rails amazon-s3 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 /模型名称/恢复/ 000/000 / MODEL_ID /原始/检验.pdf

使用Carrierwave应该是:

BUCKET_NAME /上传/模型名称/恢复/ MODEL_ID /原始/检验.pdf

现在看来我必须手动进行此转换。我想知道是否有更好的方法。

请告知。

2 个答案:

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

希望这个帮助