我正在尝试从我的应用程序中获取远程数据库中的数据。我可以用
做到ActiveRecord::Base.establish_connection({
'adapter'=>'postgresql',
'host'=> host_db,
'port'=> port,
'username'=> username_db,
'password'=> password_db,
'database'=> name_db
})
data = ActiveRecord::Base.connection.execute(tiraSQL)
ActiveRecord::Base.establish_connection ENV['DATABASE']
但是在最后一行ActiveRecord::Base.establish_connection ENV['DATABASE']
之后,我的所有表都变空了。
有没有办法在我上面提到的线之后,我的模型中的previos数据仍然存在于测试环境中(rspec)?
或
我可以从其他主机的数据库中获取数据,但会更改我当前的 ActiveRecord :: Base 连接。
Thnx提前做家伙
答案 0 :(得分:0)
Rails只能在ActiveRecord上一次打开一个数据库连接......所以当你建立连接时,你完全覆盖了旧的连接(到你的本地数据库)。
您可能希望在某处保存旧连接,并在连接到新数据库后将其返回...然后将新连接存储在某处。例如
old_connection = ActiveRecord::Base.connection
new_connection = ActiveRecord::Base.establish_connection({
'adapter'=>'postgresql',
'host'=> host_db,
'port'=> port,
'username'=> username_db,
'password'=> password_db,
'database'=> name_db
})
data = new_connection.execute(tiraSQL)
ActiveRecord::Base.connection = old_connection
注意:我没有亲自测试过这段代码 - 您可能需要做一些其他事情来使其真正有效。