Использование ActiveRecord в нескольких базах данных
Я пишу систему начисления заработной платы, которая будет интегрироваться с уже существующей системой. В исходной системе была основная база данных, которая обрабатывала управление пользователями и некоторую глобальную конфигурацию, ниже, что есть несколько баз данных, каждая из которых идентична по структуре, в основном каждая база данных - это одна база данных платежной ведомости для компаний, все они привязаны к основной базе данных, поскольку она принадлежит родительской компания, у которой есть много дочерних компаний, каждая из которых имеет свой собственный отдел кадров.
Мне было интересно, есть ли какой-либо способ, основанный на любом cookie файле или другом методе, в котором хранится какая компания, с которой они хотят подключиться, динамически изменять целевую базу данных ActiveRecord на основе их ввода с использованием фильтра перед фильтром?
Вот пример:
Пользователь A регистрируется на сайте, страница загружается с доступными компаниями, у которых есть разрешение на доступ, пользователь выбирает компанию, у нее есть привилегии администратора в этой компании, они добавляют сотрудника, прежде чем это действие будет запущено, rails переключит соединение с соответствующей базой данных, а затем добавит запись.
Ответы
Ответ 1
Вы можете использовать ActiveRecord:: Base # установить_соединение для подключения к требуемой базе данных.
Вы можете передать учетные данные db в establish_connection
как Hash
establish_connection(
adapter: 'mysql2'
encoding: 'utf8'
pool: 5
username: 'me'
password: 'mypassword'
)
Здесь больше примеров
Ответ 2
Я не уверен, что вы можете сделать это во время выполнения, поскольку соединение с базой данных связано с классом (моделью)
Однако вы можете подключать разные классы к различным базам данных
Я не хочу копировать кого-то другого, так что просто посмотрите на это сообщение
Подключение Rails 3.1 с несколькими базами данных
и дать ему кредит
Удачи.