回形针图像在轨道中调整大小



我在项目中使用回形针上传图像。我已经覆盖了默认路径(path: ':class/:id/:attachment/:basename.:extension'(。由于我错过了路径名的样式,现在我需要为图像添加缩略图。现在我已经改变了路径(

    config.paperclip_defaults = {
       styles: { thumb: "40x40" },
       path: ':class/:id/:attachment/:style/:basename.:extension',
       url: ':class/:id/:attachment/:style/:basename.:extension'}

( 风格,我已经在 S3 上传了图像。 当我为以前上传的文件运行回形针耙任务时,它向我显示以下错误

NoMethodError: undefined method `match' for nil:NilClass.

当我尝试通过控制台重新处理方法时,

User Load (1.0ms)  SELECT  "users".* FROM "users" WHERE "users"."deleted_at" IS NULL ORDER BY "users"."id" DESC LIMIT $1  [["LIMIT", 1]]
[paperclip] copying users/100000/profile_picture/Screen_Shot_2018-03-13_at_3.46.34_PM.png to local file /var/folders/f_/rp805gln2p7_1z0prxsw7www00015k/T/2bfc1b167915d853fafaa0a3ef5d83d220180319-5563-1cqfhvv.png
NoMethodError: undefined method `match' for nil:NilClass

假设您使用rake paperclip:refresh CLASS=User为已创建的图像创建版本。您可以在此处查看更多选项。

但是您当前对模型的更改不会让您这样做,因为您将路径从path: ':class/:id/:attachment/:basename.:extension'更改为path: ':class/:id/:attachment/:style/:basename.:extension'

您已经创建的图像位于类似 abc/123/attachement_name/basename.:extension 的路径上。但是在您更改回形针后,abc/123/attachement_name/origional/basename.:extension中查找它.

您可以从此处使用耙子任务。进行最少的更改后,它将解决您的问题。

namespace :paperclip do
  desc "Recreate attachments and save them to new destination"
  task :move_attachments => :environment do
    Model.find_each do |model|
      unless model.image_file_name.blank?
        filename = Rails.root.join('public', 'system', 'images', model.id.to_s, model.image_file_name)
        if File.exists? filename
          #image = File.new filename
          model.remote_image_url = filename
          model.save
          model.image.reprocess! 
          image.close
        end
      end
    end
  end
end

Model替换为您的模型名称,将图像替换为附件名称,一切都会正常工作。

最新更新