Pregunta

Me gustaría la forma canónica de hacer esto. Mis búsquedas en Google se han quedado cortas. Tengo un modelo de ActiveRecord que debería asignarse a una base de datos diferente que el resto de la aplicación. Me gustaría almacenar las nuevas configuraciones en el archivo database.yml también.

Entiendo que se debe llamar a establecer_conexión, pero no está claro dónde. Esto es lo que obtuve hasta ahora, y no funciona:

class Foo < ActiveRecord::Base
    establish_connection(('foo_' + ENV['RAILS_ENV']).intern)
end
¿Fue útil?

Solución

Además, es una buena idea subclasificar su modelo que utiliza una base de datos diferente, como:

class AnotherBase < ActiveRecord::Base
  self.abstract_class = true
  establish_connection "anotherbase_#{RAILS_ENV}"
end

Y en tu modelo

class Foo < AnotherBase
end

Es útil cuando necesita agregar modelos posteriores que acceden a la misma, otra base de datos.

Otros consejos

Je. ¡Yo tenía razón! Más limpiamente:

class Foo < ActiveRecord::Base
    establish_connection "foo_#{ENV['RAILS_ENV']}"
end

Gran publicación en pragedave.pragprog.com .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top