Ruby 在rails中动态连接到多个数据库

Ruby 在rails中动态连接到多个数据库,ruby,ruby-on-rails-3,ruby-on-rails-3.2,rails-activerecord,multiple-databases,Ruby,Ruby On Rails 3,Ruby On Rails 3.2,Rails Activerecord,Multiple Databases,我的项目需要连接到rails项目中的多个数据库。数据库信息事先未知,因此在config/database.yml中包含数据库信息不是一个选项。下面是我解决这个问题的代码: mclass ConnectionManager @@connections_map = nil def self.create_connection(klass_name,database_params) @@connections_map[klass_name] = Class.new(ActiveRecor

我的项目需要连接到rails项目中的多个数据库。数据库信息事先未知,因此在
config/database.yml
中包含数据库信息不是一个选项。下面是我解决这个问题的代码:

mclass ConnectionManager
 @@connections_map = nil

 def self.create_connection(klass_name,database_params)
    @@connections_map[klass_name] = Class.new(ActiveRecord::Base) do |c|
      #c.abstract_class = true
      c.establish_connection(database_params)
    end
 end

 def self.connections
   @@connections_map = {} unless @@connections_map.present?
   mydata = MyModel.where(.....)
   mydata.each do |data|
     klass_name = data.name.camelcase
     create_connection(klass_name,data.database_params) unless @@connections_map[klass_name]
   end
   @@connections_map
 end
end
现在理想情况下,我应该能够调用
ConnectionManager.connections
,它应该返回具有适当数据库连接的类对象

但问题是所有新创建的类都具有相同的连接信息。创建的最后一个连接将覆盖到以前的所有类对象


这种方法有什么问题?

我很困惑。您正在创建新的匿名类并在其中调用“建立\u连接”。为什么不在模型本身内部调用build_connection呢?每个mydata都包含有关其数据库的信息,我可以从中查询更多数据。我正在创建具有不同数据库连接的匿名mydata类,以便可以并行查询所有这些数据库