2016-06-22 7 views
1

ActiveRecord가있는 다중 데이터베이스를 사용합니다. 모든 모델에 establish_connection db을 넣어야합니다. 하지만 라이브러리 파일의 연결을 호출하고 싶습니다. 모든 모델에 establish_connection db을 입력하십시오. 데이터베이스 연결 횟수가 너무 많습니다. 다른 방법은 어떻게합니까?데이터베이스 연결이 너무 많습니다. ActiveRecord :: Base.establish_connection

내 프로젝트는 Ruby on Sinatra입니다.

답변

0

당신이 가지고있는 모든 가능한 연결 {db_name => connection_instance }의 글로벌 해시를 구축하고 지능적으로 모델에서 그들을 검색 : 모든 이미 설정된 연결을 다시 사용할 수 있습니다

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

그런 식으로.

NB 아키텍처 세부 정보를 알지 못해도 더 강력한 기능을 제안 할 방법이 없으므로 "global"이라고 적었습니다. 실생활에서이 해시를 어디에서나 액세스 할 수있는 어딘가에 클래스 변수로 넣을 수 있습니다.

0

여러 데이터베이스를 사용하는 우리 프로젝트에서 수행 한 작업은 데이터베이스 당 하나의 클래스를 만들고 연결을 설정하고 모델을 상속하도록 만드는 것이 었습니다. 그렇게하면 데이터베이스 당 하나의 연결 만 생성됩니다.

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

귀하의 제안을 시도했지만 데이터베이스 클래스는 모델 클래스를 상속받을 수 없습니다. – sozgur