데이터베이스로 Postgresql을 사용하고 멀티 테넌트 애플리케이션의 내 미들웨어로 레일 3을 사용하고 있습니다.Intercept ActiveRecord establish_connection 초기화 프로세스
establish_connection 메소드를 통해 생성 된 모든 연결에 대해 현재 로그인 한 클라이언트 ID를 포함하는 환경 변수를 설정하고 싶습니다.
어쨌든이 환경 변수를 설정하기 위해 establish_connection의 콜백을 통해 초기화 프로세스를 가로채는 수 있습니까?
정말 달성하고자하는 것을 설명해 주시겠습니까? 한 응용 프로그램이 여러 데이터베이스에 연결되면 env 변수에서 무엇을 설정 하시겠습니까? 그리고 왜 env 변수를 설정 하시겠습니까 ??? –
죄송합니다, 어떻게 든 내 사서함에 귀하의 의견을받지 못했습니다. 네, 환경 변수를 설정하는 것은 나쁜 습관이라고 생각했습니다. 기본적으로 데이터 프라이버시를 보장하기 위해 모든 고객 계정에 대해 포스트그레스 스키마를 구축하고 있습니다. 그러나 이것은 현재 사용자의 client_id를 기반으로 모든 ActiveRecord 연결에 대해 schema_search_path를 변경해야 함을 의미합니다. 일반적으로 모델에서 세션 정보를 사용하고 싶지는 않지만이 경우 연결이 설정 될 때마다이 정보를 사용해야합니다. 이 작업을 수행 할 수있는 명확한 방법이 있습니까? –