Comment gérer au mieux les connexions de base de données par modèle avec ActiveRecord?

StackOverflow https://stackoverflow.com/questions/141201

Question

Je voudrais la façon canonique de faire cela. Mes recherches sur Google ont été courtes. J'ai un modèle ActiveRecord qui devrait mapper vers une base de données différente de celle du reste de l'application. Je souhaite également stocker les nouvelles configurations dans le fichier database.yml.

Je comprends qu'établit_connection devrait être appelé, mais on ne sait pas où. Voici ce que j’ai eu jusqu’à présent et ça ne marche pas:

class Foo < ActiveRecord::Base
    establish_connection(('foo_' + ENV['RAILS_ENV']).intern)
end
Était-ce utile?

La solution

En outre, il est judicieux de sous-classer votre modèle utilisant une base de données différente, telle que:

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

Et dans votre modèle

class Foo < AnotherBase
end

Cela est utile lorsque vous devez ajouter des modèles ultérieurs qui accèdent au même, une autre base de données.

Autres conseils

Heh. J'avais raison! Plus proprement:

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

Excellente publication sur pragedave.pragprog.com .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top