2013-04-22 3 views
0

레일즈 3.2.13을 사용하는 어플리케이션 xy000 + device.id (예 : xy000001, xy000012, 기타.). 각 장치 (데이터베이스)에는 ActiveRecord :: Base에서 상속 한 여러 모델 (테이블)이 있습니다. 사용자가 응용 프로그램에 로그인하면 작업 할 장치를 선택합니다. 물론 여러 명의 동시 사용자가 서로 다른 장치로 작업 할 수 있으므로 한 번에 여러 데이터베이스에 연결할 수 있어야합니다.레일즈 3.2 다중 데이터베이스

질문 : 내가 어떻게

ActiveRecord::Base.establish_connection 

전화를 걸 모델을 구축 할 수 있습니다? 매번 다른 데이터베이스에 연결된 동일한 모델로 작업 할 수 있도록 사용자 입력을 기반으로 대상 데이터베이스를 선택할 수 있습니까?

희망 설명이 명확합니다. 그렇지 않다면, 나는 더 정확한 수 있습니다 ... 고마워요!

답변

0

database.yml 파일에서 사용하려는 이름으로 연결을 생성하십시오. 당신이 연결의 이름을 제품한다면 예를 들어, 다음과 같은 연결이있을 수 있습니다 모델의 다음

products: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: my_database 
    pool: 5 
    username: root 
    password: abc123 
    host: 127.0.0.1 

를, 액티브 :: 자료를 확장하고 그래서 같이 연결 설정 :

class Product < ActiveRecord::Base 
    establish_connection :products 
end 
+0

답장을 보내 주셔서 감사합니다.하지만 유감스럽게도이 방법은 불가능합니다. 내가 말했듯이, 나는 다른 이름을 가진 여러 데이터베이스를 가지고있다. 각 모델은 사용자의 입력을 기반으로 데이터베이스 이름에 연결해야합니다. 예를 들어 Product 모델은 my_database로 고정되어 있기 때문에 : products 어댑터를 사용할 수 없습니다. – user980145

관련 문제