在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