tutorial rubyonrails rails guide generate ejemplos descargar curso caracteristicas ruby-on-rails ruby

ruby-on-rails - rubyonrails - ruby on rails pdf



Usando ActiveRecord en mĂșltiples bases de datos (2)

No estoy seguro de que pueda hacerlo en tiempo de ejecución, ya que la conexión de la base de datos está acoplada a la clase (modelo)

Sin embargo, puedes crear diferentes clases para conectarte a diferentes bases de datos. No quiero copiar la respuesta de otra persona, así que mira esta publicación.

Conectando Rails 3.1 con múltiples bases de datos

y darle el crédito

Buena suerte

Estoy escribiendo un sistema de nómina que se integrará con un sistema preexistente. El sistema original tenía una base de datos maestra que manejaba la administración de usuarios y alguna configuración global, debajo de eso hay varias bases de datos cada una idéntica en su estructura, básicamente cada base de datos es una base de datos de nómina de las empresas, todo esto está vinculado a la base de datos principal porque pertenece a un padre Empresa que tiene muchas filiales, cada una con su propio departamento de recursos humanos.

Lo que me preguntaba es si hay alguna forma de que pueda, en función de una cookie u otro método que almacene a qué compañía desean conectarse, ¿cambiar dinámicamente la base de datos de destino de ActiveRecord en función de sus entradas usando un filtro anterior?

Aquí hay un ejemplo:

El usuario A inicia sesión en el sitio, la página se carga con las compañías disponibles a las que el usuario tiene permiso para acceder, el usuario seleccionará una compañía, tendrá privilegios de administrador en esa compañía, agregará un empleado, antes de que se ejecute esa acción, los rieles cambiarán La conexión a la base de datos apropiada luego agrega el registro.


Puede usar ActiveRecord::Base#establish_connection , para conectarse a la base de datos deseada.

Podría pasar las credenciales de db para establish_connection como un Hash

establish_connection( adapter: ''mysql2'' encoding: ''utf8'' pool: 5 username: ''me'' password: ''mypassword'' )

Hay mas ejemplos here