10

我使用这个片段连接到另一个数据库

ActiveRecord::Base.establish_connection....

但我不知道在不需要后如何删除此连接。

4

3 回答 3

10

你可以打电话remove_connection

old_connection = ActiveRecord::Base.remove_connection

如果您做了类似以下的事情(有作业的地方)

new_connection = ActiveRecord::Base.establish_connection(...)

这可以传递给remove_connection

old_connection = ActiveRecord::Base.remove_connection(new_connection)

您可以在源代码中找到它。

于 2013-09-09T11:24:50.337 回答
3
 your_connection = ActiveRecord::Base.establish_connection(...)

 ActiveRecord::Base.remove_connection(your_connection)
于 2013-09-09T11:29:16.293 回答
1

答案确实是remove_connection( klass=self)。但是,establish_connection(...)返回的是连接,而不是基类,所以代码应该是:

ActiveRecord::Base.establish_connection(...)
ActiveRecord::Base.remove_connection( ActiveRecord::Base)

为了区分不同的连接(例如,用于处理多个数据库),您可以创建一个子类以使其更容易。这只会断开关联的连接,即使重复调用,也不属于父类。

例如:

class MyDatabase::Base < ActiveRecord::Base
  def example_connection_and_disconnection
    MyDatabase::Base.establish_connection(...)
    MyDatabase::Base.remove_connection( MyDatabase::Base)
  end
end

希望这可以帮助其他人。:-)

于 2017-01-22T18:00:23.180 回答