こんにちは、河野です。
Railsでestablish_connectionを使う際には、config/database.ymlに設定済みの内容が利用できるようになっています。
» Railsで複数のデータベースを使用する TECHSCORE BLOG
で鈴木さんが書いてくれていますが、一部引用しますと、
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | development:   ... other_database:   adapter: postgresql   encoding: unicode   database: other_database   pool: 5   username: USERNAME   password: PASSWORD   host: localhost test:   ... production:   ... | 
| 1 2 3 4 5 | class User < ActiveRecord::Base   establish_connection :other_database end | 
こんな感じですね。
ですが、基本の設定はそのままで、動的に一部の情報を変えたいとか、そういうことがあります。例えば、ユーザ名とパスワードだけ変更するとか。
定義済みの情報をハッシュとして取得する
ActiveRecord::Base.configurationsを使用すると取得できます。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |  % bundle exec rails c [1] pry(main)> ActiveRecord::Base.configurations => {"development"=>   {"host"=>"localhost",    "adapter"=>"postgresql",    "encoding"=>"unicode",    "database"=>"hoge_development",    "pool"=>5,    "username"=>"USERNAME",    "password"=>"PASSWORD"},  "development_other"=>   {"host"=>"other_host",    "adapter"=>"postgresql",    "encoding"=>"unicode",    "database"=>"hoge_development_other",    "pool"=>5,    "username"=>"USERNAME",    "password"=>"PASSWORD"}, ... | 
ハッシュのキーは文字列になってしまうようです。
必要な部分を書き換えて使う
接続情報がハッシュで取得できれば、必要な部分を書き換えるだけですね。
| 1 2 3 4 5 6 7 8 9 10 11 | class User < ActiveRecord::Base   def self.new_connection_info     connection_info = self.configrations["development_other"]     connection_info["username"] = "NEW_USERNAME"     connection_info   end   establish_connection new_connection_info end | 
実際には、もっとスマートな感じにできそうですが、とりあえずの流れとしてはこんな感じかなと思います。

 
						