在Rails中进行每用户数据库连接的最佳方法是什么
时间:2020-03-05 18:52:09 来源:igfitidea点击:
在" Rails"中建立每用户数据库连接的最佳方法是什么?
我意识到这是糟糕的Rails设计实践,但是我们正在逐步替换每个用户使用一个数据库的现有Web应用程序。完全重新设计/重写是不可行的。
解决方案
回答
看一下ActiveRecord :: Base。Establishment_connection。这就是我们连接到其他数据库服务器的方式。我无法提供更多帮助,因为我不知道我们如何识别用户或者将其映射到数据库,但我想主数据库将具有该信息(连接信息应位于database.yml文件中) )。
祝你好运。
回答
在应用程序控制器中放入类似的内容。我正在使用子域加" _clientdb"来选择数据库的名称。我的所有数据库都使用相同的用户名和密码,因此可以从db配置文件中获取该名称。
希望这可以帮助!
class ApplicationController < ActionController::Base before_filter :hiHyman_db def hiHyman_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