2008-09-12 6 views

Antwort

10

Setzen Sie so etwas in Ihren Anwendungscontroller. Ich verwende die Subdomain plus "_clientdb", um den Namen der Datenbank auszuwählen. Ich habe alle Datenbanken, die den gleichen Benutzernamen und das gleiche Passwort verwenden, also kann ich das aus der Konfigurationsdatei der Datenbank holen.

Hoffe, das hilft!

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

Werfen Sie einen Blick auf ActiveRecord::Base.establish_connection. So stellen Sie eine Verbindung zu einem anderen Datenbankserver her. Ich kann nicht viel mehr Hilfe sein, da ich nicht weiß, wie Sie den Benutzer erkennen oder ihn seiner Datenbank zuordnen, aber ich nehme an, eine Master-Datenbank wird diese Information haben (und die Verbindungsinformation sollte auf der Datenbank.yml-Datei sein).

Viel Glück.

Verwandte Themen