2012-03-29 131 views
0

我正在尝试与ActiveRecord建立多个数据库连接。目前我需要将数据插入到总共2个数据库中。 No.Of数据库有可能增加。Ruby ActiveRecord动态模型创建

因此,我创建2类动态这将延长从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) 

然后我创建的动态模型从每个类相应

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) 

延伸然后,当我试图调用foo方法

p ConnectionUser1.foo 
p ConnectionUser2.foo 

它给我ActiveRecord :: ConnectionNotEstablished错误。

我听说如果模型没有连接ActiveRecord会连接其父母

所以根据这个ConnectionUser1应该使用连接Connection1和ConnectionUser2使用连接Connection2。

那么为什么ActiveRecord无法建立连接?

任何帮助将不胜感激。
谢谢。

回答