2011-09-14 19 views
5

Estoy tratando de conectar múltiples bases de datos en ROR application.My database.yml es este aspecto en su archivo database.ymlconexión DB múltiple en los carriles

desarrollo:

adapter: mysql 
username: root 
password: 
database: example_development 

privada:

adapter: mysql 
username: root 
password: 
database: example_private_development 

es posible conectarse a través de establish_connection: privada

Mi duda es que el uso de rake db: create.I no puedo obtener la solución de google.

Ayúdame a solucionarlo.

Respuesta

6

Trate

rake db:create:all 

Y sí, es posible tener varias conexiones db en una aplicación Rails.

Esto es lo que hice una vez, he creado dos clases que heredan de ActiveRecord::Base y establezco las conexiones dentro de esas clases.

Entonces me heredaron todos mis modelos en una de esas clases en lugar de directa ActiveRecord

A continuación se muestra un ejemplo:

database.yml file 

#app uses two database 
#1 - test1 
#2 - test2 
test1: 
    adapter: mysql 
    encoding: utf8 
    database: test1 
    username: root 
    password: xxx 
    host: localhost 

test2: 
    adapter: mysql 
    encoding: utf8 
    database: test2 
    username: root 
    password: xxx 
    host: localhost 

Entonces tengo dos modelos para ambas bases de datos test1 y test2:

class Test1Base < ActiveRecord::Base 
    self.abstract_class = true 
    establish_connection("test1") 
end 

class Test2Base < ActiveRecord::Base 
    # No corresponding table in the DB. 
    self.abstract_class = true 
    establish_connection("test2") 
end 

Luego heredo mis modelos según la base de datos:

class School < Test1Base 
    #code 
end 

class Student < Test2Base 
    #code 
end 
+0

Hola sameera, su respuesta es correcta. Tengo una pregunta más sobre cómo migrar modelos para "portal_development". Ayúdame ... –

+0

Hola @Shamith, Ups, eso fue un error tipográfico, que deberían ser los nombres env, he editado el database.yml anterior, ya que usé mi archivo existente como un ejemplo se olvidó de eliminar algunas líneas, lo siento ...: D – sameera207

2

Gracias por su respuesta.

podemos migrar un modelo para particular, DB, por ejemplo

db:migrate RAILS_ENV="portal_development"'.

Y más cambio para establecer la conexión con el DB.check corrige a continuación

class Test1Base < ActiveRecord::Base 
    self.abstract_class = true 
    establish_connection :development 
end 

class Test2Base < ActiveRecord::Base 
    # No corresponding table in the DB. 
    self.abstract_class = true 
    establish_connection :portal_development 
end 

Gracias sameera por su valiosa respuesta.

aplausos

Shamith c

Cuestiones relacionadas