从Paperclip迁移到Carrierwave或Refile

时间:2016-08-24 21:14:05

标签: ruby-on-rails migration paperclip carrierwave

由于this,我想从Paperclip迁移到Carrier Wave或Refile。编写here的解决方案令人印象深刻,但令我印象深刻,也许是脆弱的。

我的Rails4应用程序包含100张用Paperclip上传的图像。文件存储在生产服务器上。我已经寻找了一套完整的迁移步骤,但仍然是空的。

是否有一组可以遵循的步骤允许迁移而无需重新编写应用程序代码?

或者,当表单验证失败时,是否有另一种方法可以在Paperclip中保留上传的文件?

我在这里缺少什么?

更新:

通过here尝试详细解决https://stackoverflow.com/users/646389/galatians的解决方案。我的回形针:路径和:url插值使用:id_partition。我没有看到这种方式可以与已上传但尚未保存的已上传图片进行协调。

2 个答案:

答案 0 :(得分:1)

我迁移到了Carrierwave。以下是相关统计数据:

  • 编写持久文件解决方案的工作时间和失败时间 使用Paperclip重新加载表格 - 4小时。请参阅OP更新,了解我无法克服的问题。
  • 时间迁移到carrierwave,调整相关模型,控制器和表单,然后进行测试。 - 2小时。还不错。

此关键信息帮助我正确调整路径。保持路径相同对我来说非常重要,因为我不必将图像移动到生产中的新位置:

  • 用于生成类似回形针的Carrierwave代码:path和:url info here
  • 回形针插值信息here
  • 这个link让我走上正轨,虽然我的默认:路径使用了:id_partition not:id。

更新: 迁移打破了这种范式:

  @protocol.images.each do |i|  
    tmp=i.dup  
    tmp.avatar = File.open(i.avatar.current_path)  
    tmp.save!  
    @dest.images << tmp          
  end  

请参阅:Duplicating a record that contains a carrierwave avatar : Getting "can't convert nil into Integer" error

答案 1 :(得分:0)

您无需执行任何操作,因为获取图像所需的唯一数据已存储在数据库中。