2008-09-12 26 views

回答

10

在你的应用程序控制器中放置这样的东西。我正在使用子域加“_clientdb”来选择数据库的名称。我有所有的数据库使用相同的用户名和密码,所以我可以从数据库配置文件中获取。

希望这会有所帮助!

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

看看ActiveRecord::Base.establish_connection。这就是你如何连接到不同的数据库服务器。我不能提供更多帮助,因为我不知道如何识别用户或将其映射到它的数据库,但我想主数据库将拥有该信息(并且连接信息应该位于database.yml文件中)。

祝你好运。

相关问题