【问题标题】:Migrate from Paperclip to Carrierwave or Refile从 Paperclip 迁移到 Carrierwave 或 Refile
【发布时间】:2016-08-24 21:14:05
【问题描述】:

由于this,我想从 Paperclip 迁移到 Carrier Wave 或 Refile。写成here 的解决方案令人印象深刻,但让我觉得复杂而且可能很脆弱。

我的 Rails4 应用有 100 张使用 Paperclip 上传的图片正在制作中。文件存储在生产服务器上。我一直在寻找一套完整的迁移步骤,但总是空无一物。

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

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

我在这里缺少什么?

更新:

尝试了here by https://stackoverflow.com/users/646389/galatians 详细介绍的解决方案。我的回形针 :path 和 :url 插值使用 :id_partition。我看不出有什么方法可以与已上传但尚未保存的上传图像相协调。

【问题讨论】:

    标签: ruby-on-rails migration paperclip carrierwave


    【解决方案1】:

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

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

    这个关键信息帮助我正确调整路径。保持路径相同对我来说很重要,因为它可以避免将图像移动到生产中的新位置:

    • Carrierwave 代码用于生成类似回形针的 :path 和 :url info here
    • 回形针插值信息here
    • link 让我走上了正轨,虽然我的默认 :path 使用的是 :id_partition 而不是 :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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-17
      相关资源
      最近更新 更多