Использование 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 с несколькими базами данных

и дать ему кредит

Удачи.