进行每用户数据库连接的最佳方法是什么Rails
?
我意识到这是一个糟糕的Rails设计实践,但我们正在逐步取代每个用户使用一个数据库的现有Web应用程序.完全重新设计/重写是不可行的.
把这样的东西放在应用程序控制器中.我正在使用子域加上"_clientdb"来选择数据库的名称.我有所有数据库使用相同的用户名和密码,所以我可以从db配置文件中获取它.
希望这可以帮助!
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