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

时间:2013-03-23 20:30:12

标签: 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(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,它应该返回具有适当数据库连接的类对象。

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

这种方法有什么问题?

0 个答案:

没有答案