0

私のプロジェクトでは、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、適切なデータベース接続を持つクラスオブジェクトを返す呼び出しができるはずです。

ただし、問題は、新しく作成されたすべてのクラスが同じ接続情報を持っていることです。最後に作成された接続は、以前のすべてのクラスオブジェクトに上書きされます。

このアプローチの何が問題になっていますか?

4

0 に答える 0