Ruby 数据库与ActiveRecord的连接太多::Base.build\u连接

Ruby 数据库与ActiveRecord的连接太多::Base.build\u连接,ruby,database,activerecord,sinatra,multi-database,Ruby,Database,Activerecord,Sinatra,Multi Database,我在ActiveRecord中使用多表数据库。我必须在所有型号中设置建立\u连接db。但是我想调用库的连接文件。在为所有型号的数据库输入连接数据库时,数据库连接计数过多。我怎样做其他方法 我的项目是一个Ruby on Sinatra。为所有可能的连接构建一个{db\u name=>connection\u instance}的全局哈希,并智能地从模型中检索它们: def get_or_establish_connection db $connections[db] ||= establish

我在ActiveRecord中使用多表数据库。我必须在所有型号中设置
建立\u连接db
。但是我想调用库的连接文件。在为所有型号的数据库输入连接数据库时,数据库连接计数过多。我怎样做其他方法


我的项目是一个Ruby on Sinatra。

为所有可能的连接构建一个
{db\u name=>connection\u instance}
的全局哈希,并智能地从模型中检索它们:

def get_or_establish_connection db
  $connections[db] ||= establish_connection db
end
这样,您将重用所有已建立的连接


NB我之所以写“global”,是因为如果不了解您的体系结构细节,就无法提出更健壮的建议。在现实生活中,人们会把这个散列作为一个可以从任何地方访问的类变量。

为所有可能的连接构建一个
{db\u name=>connection\u instance}
的全局散列,并智能地从模型中检索它们:

def get_or_establish_connection db
  $connections[db] ||= establish_connection db
end
这样,您将重用所有已建立的连接


NB我之所以写“global”,是因为如果不了解您的体系结构细节,就无法提出更健壮的建议。在现实生活中,人们会把这个散列作为一个类变量放在任何地方都可以访问的地方。

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

class UsageTable < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :usage
end
class User < UsageTable
类UsageTable我们在使用多个数据库的项目中所做的是为每个数据库创建一个类,用于建立连接,并使模型从中继承。这样,每个数据库只创建一个连接

class UsageTable < ActiveRecord::Base
  self.abstract_class = true
  establish_connection :usage
end
class User < UsageTable
类UsageTable我尝试了您的建议,但数据库类无法继承到模型类。我尝试了您的建议,但数据库类无法继承到模型类。