tutorial rails español datos consultas consulta conexion conectar con ruby-on-rails database connections

español - Conexión a múltiples bases de datos en ruby on rails



consultas en ruby on rails (2)

Tengo una aplicación ruby ​​on rails que funciona bien y está conectada a una base de datos. Ahora quiero conectarme a una base de datos diferente de la misma aplicación. El modelo de datos puede ser exactamente el mismo. De hecho, si me conecto a la base de datos diferente, la aplicación funciona bien. Sin embargo quiero conectarme a dos bases de datos diferentes. ¿Es posible en rubí sobre raíles?


Para la conexión de varias bases de datos, debe agregar los siguientes códigos al archivo database.yml. Aquí, doy el ejemplo de conectar dos bases de datos desde una aplicación de rieles

config / database.yml

development: adapter: mysql2 database: db1_dev username: root password: xyz host: localhost development_sec: adapter: mysql2 database: db2_dev username: root password: xyz host: localhost production: adapter: mysql2 database: db1_prod username: root password: xyz host: your-production-ip production_sec: adapter: mysql2 database: db2_prod username: root password: xyz host: your-production-ip

Aquí he utilizado dos bases de datos para el entorno de desarrollo y producción.

Ahora necesitamos conectar el modelo a las bases de datos. Cuando esté ejecutando su aplicación en modo de desarrollo y producción, todos los modelos se asignarán a través de los parámetros de desarrollo y producción de db que se mencionaron en su database.yml. Así que para algún modelo necesitamos conectarnos a otra base de datos.

Supongamos que tenemos dos modelos de Usuario y Categoría. La tabla de usuarios está en db1_dev y db1_prod, la tabla de categorías en db2_dev y db2_prod.

Modelo de categoría

class Category < ActiveRecord::Base establish_connection "#{Rails.env}_sec" end

Del mismo modo, cuando agregue la nueva migración para la segunda base de datos, deberá agregar el siguiente código.

class CreateRewards < ActiveRecord::Migration def connection ActiveRecord::Base.establish_connection("#{Rails.env}_sec").connection end def change # your code goes here. end end

Espero que funcione para usted :).


Utilice establish_connection para cambiar a una base de datos diferente:

ActiveRecord::Base.establish_connection( :adapter => "mysql", :host => "localhost", :username => "myuser", :password => "mypass", :database => "somedatabase" )

También puede pasar un entorno preconfigurado desde database.yml así:

ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations[''other_env''])

También puedes configurarlo para un modelo específico:

MyClass.establish_connection(...)