2008-09-12 11 views

Répondre

10

J'utilise le sous-domaine plus "_clientdb" pour choisir le nom de la base de données. J'ai toutes les bases de données en utilisant le même nom d'utilisateur et mot de passe, donc je peux saisir cela à partir du fichier de configuration DB.

Espérons que cela aide!

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

Jetez un oeil à ActiveRecord::Base.establish_connection. C'est ainsi que vous vous connectez à un serveur de base de données différent. Je ne peux pas être beaucoup plus utile car je ne sais pas comment vous reconnaissez l'utilisateur ou le mapper à sa base de données, mais je suppose qu'une base de données master aura cette information (et les informations de connexion devraient être sur le fichier database.yml).

Bonne chance. Mettez quelque chose comme ça dans votre contrôleur d'application.

Questions connexes