Rails - ActiveRecord从实例获取数据库名称

时间:2014-07-18 15:16:02

标签: ruby-on-rails database activerecord

我将模型分发到许多数据库中。这是一个例子:

class Timetablerange < ActiveRecord::Base
  self.table_name = "TimetableRange"

  def self.integration(integration)
    self.establish_connection(integration.to_sym)
    return self
  end

end

所以,当我想从一个数据库中获取实例时:

Timetablerange.integration(:integration_id).find(1)

我需要从实例中获取database_name而不使用:

Timetable.connection.current_database

因为如果我使用它可能会有所不同:

instance_a = Timetablerange.integration(:integration_1).find(1)
instance_b = Timetablerange.integration(:integration_2).find(1)

此时Timetable.connection.current_database =:integration_2但是instance_a是从:integration_1加载的。

我试过用:

instance_a.connection_handler.connection_pools

它列出了所有连接。但是我现在怎么能把数据库装入instance_a?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

如果你使用的是mysql,你可以使用:

Timetable.connection.execute("select database()").first.first

其他数据库也可能有查询来获取当前的数据库。