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
Subscríbete