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