我有一个Ruby On Rails应用程序,它同时使用两个数据库。这些数据库之一总是相同的,但是如果您选择其他项目,则另一个数据库会动态更改。
我每个都有一个.yml数据库配置文件:
MAINdb.yml(从未更改)
project_1.yml
project_2.yml
...
project_n.yml
如果更改项目,则会读取新的.yml并在运行时更改数据库连接。
.yml示例:
default: &default
adapter: postgresql
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 30 } %>
encoding: unicode
username: xxx
password: xxx
timeout: 2400
port: 5432
development:
<<: *default
host: xx.xx.xx.xx
database: development
test:
<<: *default
database: development
production:
<<: *default
host: xx.xx.xx.xx
database: production
好吧,由于需要使用来自MAINdb的大量表和来自辅助db的3 o 4表,因此我具有“混合连接”。
正如您在此处看到的那样,我建立了此辅助连接:
class AuxDbBase < ActiveRecord::Base
self.abstract_class = true
end
模型示例:
class Example< AuxDbBase
self.table_name ="example"
end
动态连接:
connection_db_params = YAML::load(ERB.new(File.read(Rails.root.join("config/db_config", "#{project}.yml"))).result)[Rails.env]
Example.establish_connection connection_db_params
所有这些都在开发模式下工作,但是在生产模式下,我出现此错误:
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: there is no "example" relationship
LINE 1: SELECT * FROM tabla WHERE type = 'xxx'
有人知道问题的根源在哪里吗?
对于迁移环境而言,发生什么变化呢?
我很感谢您的帮助
对不起,我的英语