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

时间:2018-03-19 05:50:23

标签: ruby-on-rails paperclip

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

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

)有风格,我在S3上传了图片。  当我为以前上传的文件运行paperclip rake任务时,它会显示以下错误

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

1 个答案:

答案 0 :(得分:0)

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

但是您当前对模型所做的更改不会让您这样做,因为您已将路径从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中查找。

您可以使用here中的rake任务。在进行最小的更改后,它将解决您的问题。

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替换为您的型号名称和带附件名称的图片,一切都会有效。