Skip to content
This repository has been archived by the owner on Jul 13, 2023. It is now read-only.

Changing attachment :path

krismeister edited this page May 25, 2013 · 6 revisions

After changing attachment's :path setting images need to be recreated. You can use the following rake task

# Assuming you had a model like this
#
# class Post
#   has_attached_file :image, :path => ":rails_root/public/system/:attachment/:id/:style/:filename"
# end

namespace :paperclip do
  desc "Recreate attachments and save them to new destination"
  task :move_attachments => :environment do

    Post.find_each do |post|
      unless post.image_file_name.blank?
        filename = Rails.root.join('public', 'system', 'images', post.id.to_s, 'original', post.image_file_name)

        if File.exists? filename
          puts "Re-saving image attachment #{post.id} - #{filename}"
          image = File.new filename
          post.image = image
          post.save
          # if there are multiple styles, you want to recreate them :
          post.image.reprocess! 
          image.close
        end
      end
    end
  end
end