2016-06-22 62 views
1

我使用ActiveRecord多标记数据库。我必须在所有型号中放置establish_connection db。但是我想调用库文件的连接。虽然把establish_connection db所有模型数据库连接数量太多。我怎样才能做其他方法?数据库连接太多ActiveRecord :: Base.establish_connection

我的项目是在Sinatra上的Ruby。

回答

0

建设的{db_name => connection_instance }你都可以连接一个全球性的哈希值,并从模型智能检索它们:

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

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

NB我写了“全球”,因为没有任何建议任何更强大的方法,而不知道你的架构细节。在现实生活中,人们会将这个散列作为一个类变量存放在任何地方。

0

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

class UsageTable < ActiveRecord::Base 
    self.abstract_class = true 
    establish_connection :usage 
end 
class User < UsageTable 
+0

我试过了你的建议,但数据库类不能继承到模型类。 – sozgur