2012-03-29 2 views
0

J'essaie d'établir une connexion DB multiple avec ActiveRecord. Actuellement, j'ai besoin d'insérer des données dans 2 bases de données au total. Il y a une possibilité d'augmentation dans les bases de données NoOf.Création de modèle dynamique Ruby ActiveRecord

Je crée 2 classes dynamique qui prolongera de ActiveRecord::Base

Object.const_set("Connection1",Class.new(ActiveRecord::Base) do 
    self.abstract_class = true 
    self.establish_connection({ 
    :host=>"localhost", :username=>"root", :password=>"root", :database=>"db1", :encoding=>"utf8", :adapter=>"mysql2"}) 
end) 

Object.const_set("Connection2",Class.new(ActiveRecord::Base) do 
    self.abstract_class = true 
    self.establish_connection({ 
    :host=>"localhost", :username=>"root", :password=>"root", :database=>"db2", :encoding=>"utf8", :adapter=>"mysql2"}) 
end) 

Ensuite, je crée des modèles dynamiques s'étend de chaque classe en conséquence

Object.const_set("ConnectionUser1",Class.new(Connection1) do 
    self.table_name = 'user' 
    def self.foo 
    all.count 
    end 
end) 

Object.const_set("ConnectionUser2",Class.new(Connection2) do 
    self.table_name = 'user' 
    def self.foo 
    all.count 
    end 
end) 

Puis, quand j'ai essayé d'appeler la méthode foo

p ConnectionUser1.foo 
p ConnectionUser2.foo 

Il me donne ActiveRecord :: ConnectionNotEstablished Erreur.

J'ai entendu dire que si le modèle n'a pas de connexion, ActiveRecord se connectera à leur parent.

Donc, selon ce ConnectionUser1 devrait utiliser la connexion de Connection1 et ConnectionUser2 utiliser la connexion de Connection2.

Alors pourquoi ActiveRecord ne parvient pas à établir la connexion?

Toute aide sera appréciée.
Merci.

Répondre

Questions connexes