动态添加到database.yml

时间:2014-06-15 20:23:33

标签: ruby-on-rails activerecord

多租户ROR应用

-

我试图弄清楚如何从database.yml调用不同的数据库:

#config/database.yml
#Defaults
default: &default
  adapter: mysql2
  pool: 5
  timeout: 5000

dev: &dev
  <<: *default
  username: *****
  password: *****
  host: ******

##########################

#Admin
development_admin:
  <<: *dev
  database: *******

##########################

我想将database键设为变量,因此可以这样设置:

class Admin < ActiveRecord::Base
  self.abstract_class = true 
  establish_connection("#{Rails.env}_admin", database: "our_db")
end

问题是发生如下错误:

enter image description here


我确定有办法解决这个问题 - 我有兴趣听听是否有人有办法解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果正确理解了问题:

con = Rails.configuration.database_configuration["#{Rails.env}_admin"]
establish_connection(con.merge('database' => 'our_db'))

或者,如果简单使用配置:

establish_connection("#{Rails.env}_admin")