У меня есть приложение 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 и 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'
Кто-нибудь знает, где источникпроблема может быть?
Что может измениться, когда дело доходит до среды миграции, чтобы этоappening?
Я благодарен за любую помощь
Извините за мой английский