1

我使用带有 ActiveRecord 的多数据库。我必须放入establish_connection db所有模型。但我想调用库文件的连接。虽然establish_connection db为所有模型放入数据库连接数太多。我该怎么做其他方法?

我的项目是 Sinatra 上的 Ruby。

4

2 回答 2

0

为您拥有的所有可能的连接构建一个全局哈希,{db_name => connection_instance }并智能地从您的模型中检索它们:

def get_or_establish_connection db
  $connections[db] ||= establish_connection db
end

这样,您将重用所有已建立的连接。

注意,我之所以写“全球”,是因为如果不了解您的架构细节,就无法提出更强大的建议。在现实生活中,人们会将这个散列作为一个类变量放在任何地方都可以访问的地方。

于 2016-06-22T12:53:21.417 回答
0

我们在使用多个数据库的项目中所做的是为每个数据库创建一个类,建立连接并让模型从它继承。这样,每个数据库只创建一个连接。

class UsageTable < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :usage
end
class User < UsageTable
于 2016-06-22T12:55:02.513 回答