2008-09-12 12 views

Respuesta

10

Pon algo así en tu controlador de aplicaciones. Estoy usando el subdominio más "_clientdb" para elegir el nombre de la base de datos. Tengo todas las bases de datos usando el mismo nombre de usuario y contraseña, así que puedo tomar eso del archivo de configuración db.

Espero que esto ayude!

class ApplicationController < ActionController::Base 

    before_filter :hijack_db 

    def hijack_db 
    db_name = request.subdomains.first + "_clientdb" 

    # lets manually connect to the proper db 
    ActiveRecord::Base.establish_connection(
     :adapter => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['adapter'], 
     :host  => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['host'], 
     :username => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['username'], 
     :password => ActiveRecord::Base.configurations[ENV["RAILS_ENV"]]['password'], 
     :database => db_name 
    ) 
    end 
end 
1

Eche un vistazo a ActiveRecord::Base.establish_connection. Así es como te conectas a un servidor de base de datos diferente. No puedo ser de mucha ayuda, ya que no sé cómo reconocer al usuario o asignarlo a su base de datos, pero supongo que una base de datos maestra tendrá esa información (y la información de conexión debe estar en el archivo database.yml)

Lo mejor de la suerte.

Cuestiones relacionadas