我正在为我的rails应用程序使用两个不同的数据库。我通过将以下行添加到user.rb
中将我的用户模型连接到第二个数据库 establish_connection "db2_#{Rails.env}"
我正在使用多数据库迁移gem https://github.com/azitabh/multi-database-migrations,当我运行
时它可以正常工作rake db:multi:migrate DATABASE=db2
目前我的database.yml看起来像这样:
development:
adapter: mysql2
encoding: utf8
database: database_name
pool: 5
username: root
password:
db2_development:
adapter: mysql2
encoding: utf8
database: database_name
pool: 5
username: root
password:
但我希望它看起来像这样
db1_development:
adapter: mysql2
encoding: utf8
database: database_name
pool: 5
username: root
password:
db2_development:
adapter: mysql2
encoding: utf8
database: database_name
pool: 5
username: root
password:
我的问题是我应该在哪里告诉rails寻找“db1 _#{Rails.env}”?
我想在我的application.rb中添加类似的东西:
ENV['ENV'] ||= 'development'
db_conf = YAML::load(File.read("config/database.yml"))
DB1_CONF = db_conf["db1_#{Rails.env}"][ENV['ENV']]
DB2_CONF = db_conf["db2_#{Rails.env}"][ENV['ENV']]
但我不确定应该在哪里调用常量DB1_CONF。
有什么建议吗?
答案 0 :(得分:0)
development
是rails应用程序在本地启动时运行的环境,并且通过database.yml
为此环境配置,因此您的模型将会退回"到development
的默认数据库配置。如果您希望它们连接到db1_development
,则必须明确告知模型,就像使用db2建立的连接一样。如果你不遵循惯例而不是配置,你必须明确。或者你可能会问自己为什么你不想首先坚持约定。