Apuntes de Rails

y de otras cosas

Migración de ficheros de FileColumn a Paperclip

Dejo aquí una chuletilla para migrar los attachments de FileColumn a Paperclip que tenía por ahí guardada desde hace meses.

En este caso lo hice en la migración pero se puede hacer en una tarea rake, o directamente desde la consola. Una vez que tienes los campos necesarios para Paperclip, y los datos del attachment definidos en el modelo, puedes hacer:

Modelo.all.each do |f| 
  f.fichero = File.open("#{RAILS_ROOT}/public/modelo/fichero/#{f.id}/#{f.fichero_viejo}",'rb')
  f.save
end 

Se puede mejorar mucho, pero como era sólo una vez esto me sirvió, lo dejo aquí por si a alguien más le sirve como punto de partida.

class FdsAPaperclip ActiveRecord::Migration                                                                                                                
  def self.up
    rename_column :fds, :fichero, :fichero_viejo
    add_column :fds, :fichero_file_name, :string
    add_column :fds, :fichero_content_type, :string
    add_column :fds, :fichero_file_size,    :integer
    add_column :fds, :fichero_updated_at,   :datetime

    Fds.all.each do |f| 
      f.fichero = File.open("#{RAILS_ROOT}/public/fds/fichero/#{f.id}/#{f.fichero_viejo}",'rb')
      f.save
    end 

  end 

  def self.down
    rename_column :fds, :fichero_viejo, :fichero
    remove_column :fds, :fichero, :fichero_file_name
    remove_column :fds, :fichero_content_type
    remove_column :fds, :fichero_file_size
    remove_column :fds, :fichero_updated_at
  end 
end