我的项目需要连接到 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
which 应该返回具有适当数据库连接的类对象。
但问题是所有新创建的类都有相同的连接信息。创建的最后一个连接将被所有以前的类对象覆盖。
这种方法有什么问题?