【发布时间】:2014-09-09 19:03:31
【问题描述】:
我有一个分布在许多数据库中的模型。这是一个例子:
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 加载数据库呢?
非常感谢您的帮助!
【问题讨论】:
-
AFAIK 实例不知道它们是从哪个连接中检索到的
-
如果你是对的,那么当我在实例中调用 .save 时,ActiveRecord 可以更新任意数据库中的值吗?这听起来很冒险!
-
我相信是的——如果你经常切换数据库连接,那将是一个危险
-
好的!那就太感谢了!我可能会为每个实例添加一些构造函数以将连接保存在 attr_accessor 中。最好的问候!
标签: ruby-on-rails database activerecord