我使用ActiveRecord的多数据库。我必须将establish_connection db
放在所有模型中。但我想调用库文件的连接。虽然将establish_connection db
放入所有模型,但数据库连接数量过多。我该怎么办其他方法?
我的项目是Ruby on Sinatra。
答案 0 :(得分:0)
为所有可能的连接构建{db_name => connection_instance }
的全局哈希值,并智能地从模型中检索它们:
def get_or_establish_connection db
$connections[db] ||= establish_connection db
end
这样你就可以重用所有已建立的连接。
NB 我写了“全局”,因为如果不了解您的架构细节,就无法提出更强大的建议。在现实生活中,人们会把这个哈希作为一个类变量放在任何地方都可以访问。
答案 1 :(得分:0)
我们在使用多个数据库的项目中所做的是为每个数据库创建一个类,建立连接,并使模型从中继承。这样,每个数据库只创建一个连接。
class UsageTable < ActiveRecord::Base
self.abstract_class = true
establish_connection :usage
end
class User < UsageTable