【问题标题】:Reprocessing images in Carrierwave在 Carrierwave 中重新处理图像
【发布时间】:2012-02-22 08:34:27
【问题描述】:

假设我的模型有一个带有:thumb 的图像,而客户想要:tiny:nano 缩略图。

如何使用 rake 任务重新处理所有现有图像?

我发现了一个我认为可以完成的 rake 任务https://gist.github.com/777788,但它给了我错误。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 rake carrierwave


    【解决方案1】:

    我想通过Mikhail Nikalyukin扩展这个很棒的答案

    要重新处理单个版本,您可以执行以下操作

    Model.all.each do |model|
      model.image.recreate_versions!(:version1, :version2)
    end
    

    这样,如果你添加了一个新版本,你就不必再做所有这些了

    【讨论】:

      【解决方案2】:

      根据 Carrerwave 文档,您可以使用以下命令:

      Model.all.each do |model|
        model.image.recreate_versions!
      end
      

      【讨论】:

      • 我现在已经把它放在了一个 rake 任务中,它对我的​​应用程序有点硬编码,但它会解决问题
      • 它将重新创建所有内容,如果您需要重新创建,比如说最近 100 条记录的图像 -> Model.last(100).each { |m| m.image.recreate_versions! }
      • 根据存储的不同,您可能需要这样做:github.com/carrierwaveuploader/carrierwave/wiki/…
      • 为了让它工作,我必须在循环内添加model.save(这也是由@etagwerker指向的代码完成的)。
      • 我添加了支票:model.image.recreate_versions! if model.image?,因为在我的案例中并非所有对象都上传了图像。
      猜你喜欢
      • 2011-07-05
      • 2020-04-08
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2013-03-04
      • 2012-06-19
      相关资源
      最近更新 更多