Suponiendo como ejemplo que tenemos dos modelos (Post y Comment) y este último está localizado en una base de datos externa, se puede configurar rails de la siguiente forma:
1) Primero, creamos un fichero de configuración para la conexión a la nueva base de datos (config/external_database.yml).
development:
adapter: mysql
database: test
username: root
password:
production:
adapter: mysql
database: test
username: root
password:
2) Después, creamos un módulo para encapsular la lectura del fichero y la nueva conexión.
module ExternalDatabase
def self.included(base)
config = YAML.load(File.open('config/external_database.yml'))
if config and ENV['RAILS_ENV']
base.establish_connection(config[ENV['RAILS_ENV']])
else
raise 'External Database not configured'
end
end
end
3) Por último, incluimos en los modelos que van a la base de datos externa el módulo que hemos creado.
class Comment < ActiveRecord::Base
include ExternalDatabase
belongs_to :post
end
Con esto ya podemos utilizar los modelos aunque cada uno esté en una base de datos diferente.
Comment.find(:all, :include => :post)