Feb232010

Acceder y mapear varias bases de datos en Rails

En ocasiones me he encontrado con la necesidad de importar algunos datos de una base de datos antigua al empezar un proyecto nuevo, con una base de datos y tablas completamente nuevas y distintas de las originales. En estos casos es necesario mapear la base datos antigua para que podamos ejecutar una task que realice la importación de datos tal y como deseemos.

Así pues parece lógico que lo primero que haremos es modificar el archivo database.yml:

# Common configuration.
base_config: &base_config
    encoding: unicode
    adapter:  postgresql
    host: localhost  

# App configuration.
development:
    <<: *base_config
    database: my_new_app_development

old_database:
    <<: *base_config
    database: old_app_production

Lo siguiente que debermos hacer es realizar el correspondiente mapeo de la base de datos antigua, llamada ‘old_database’ en el ejemplo. Así pues, si queremos mapear la tabla de usuarios de ‘old_database’, dentro de ‘lib/’ crearemos el fichero ‘old_database_mapping.rb’:

class OldDB < ActiveRecord::Base
  OldDB.establish_connection(: old_database)
end

class OldUser < OldDB
  set_table_name "users"
  set_primary_key "idint" 
end

Finalmente, faltara el correspondiente require de dicho archivo en config/environment.

require "old_database_mapping.rb"

Para probarlo, podríamos ir a la consola de Rails y ejecutar sin problemas:

OldUser.all

Comentarios

No hay comentarios todavía para este post

Nuevo comentario