sheatsb (owner)

Fork Of

Revisions

  • 8bb424 jystewart Tue Jan 27 03:18:10 -0800 2009
gist: 184181 Download_button fork
public
Public Clone URL: git://gist.github.com/184181.git
Embed All Files: show embed
paperclip_migrations.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
module PaperclipMigrations
 
  def self.included(base)
    base.extend ClassMethods
  end
  
  module ClassMethods
    def add_paperclip_fields(table, prefix)
      add_column table, "#{prefix}_file_name", :string
      add_column table, "#{prefix}_content_type", :string
      add_column table, "#{prefix}_file_size", :integer
      add_column table, "#{prefix}_updated_at", :datetime
    end
  
    def populate_paperclip_from_attachment_fu(model, attachment, prefix)
      unless attachment.filename.nil?
        model.send("#{prefix}_file_name=", attachment.filename)
        model.send("#{prefix}_content_type=", attachment.content_type)
        model.send("#{prefix}_file_size=", attachment.size)
    
        old_path = File.join(RAILS_ROOT, 'public', attachment.public_filename)
        new_path = model.send(prefix).path(:original)
        new_folder = File.dirname(new_path)
      
        unless File.exists?(new_folder)
          FileUtils.mkdir_p(new_folder)
        end
      
        if File.exists?(old_path)
          puts "Moving #{old_path} to #{new_path}"
          File.copy(old_path, new_path)
          model.save
          model.send(prefix).reprocess!
        else
          puts "No such file: #{old_path}"
        end
      end
    end
  end
end