2012-03-29 90 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無法建立連接?

任何幫助將不勝感激。
謝謝。

回答