Pergunta

Eu gostaria a forma canônica para fazer isso. Minhas pesquisas do Google vêm-se curto. Eu tenho um modelo ActiveRecord que devem mapear para um banco de dados diferente do que o resto da aplicação. Eu gostaria de armazenar as novas configurações no arquivo database.yml também.

Eu entendo que establish_connection deve ser chamado, mas não está claro onde. Aqui está o que eu tenho até agora, e ele não funciona:

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

Solução

Além disso, é uma boa idéia para subclasse o modelo que utiliza banco de dados diferente, como:

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

E no seu modelo

class Foo < AnotherBase
end

É útil quando você precisa adicionar modelos posteriores que acessam o mesmo, outro banco de dados.

Outras dicas

Heh. Eu tinha razão! Mais limpa:

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

Great post em pragedave.pragprog.com .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top