Ruby on rails - 从没有API的远程数据库获取数据

时间:2018-02-21 19:03:37

标签: ruby-on-rails database activerecord remote-server

我正在尝试从我的应用程序中获取远程数据库中的数据。我可以用

做到
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提前做家伙

1 个答案:

答案 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

注意:我没有亲自测试过这段代码 - 您可能需要做一些其他事情来使其真正有效。