如何断开与rails中的特定数据库的连接?

时间:2013-09-09 11:16:44

标签: ruby-on-rails activerecord

我使用此代码段连接到另一个数据库

ActiveRecord::Base.establish_connection....

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

3 个答案:

答案 0 :(得分:8)

您可以致电remove_connection

old_connection = ActiveRecord::Base.remove_connection

如果您已完成以下(其中有作业)

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

这可以传递给remove_connection

old_connection = ActiveRecord::Base.remove_connection(new_connection)

您可以在the source code找到它。

答案 1 :(得分:2)

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

 ActiveRecord::Base.remove_connection(your_connection)

答案 2 :(得分:0)

答案确实是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

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