我正在尝试与ActiveRecord建立多个数据库连接。目前我需要将数据插入到总共2个数据库中。 No.Of数据库有可能增加。
所以我动态创建了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
无法建立连接?
任何帮助将不胜感激 谢谢。
答案 0 :(得分:1)
请看下面的链接,该链接显示了如何在ActiveRecord中使用多个数据库。
How do i work with two different databases in rails with active records?