2011-01-28 5 views
1

Rails를 사용하여 재무 응용 프로그램을 인쇄하는 인쇄 프로세스를 작성하려고합니다.Rails에서 여러 수준의 데이터를 효율적으로 가져 오기

여러 수준의 데이터 (응용 프로그램 자체, 하위 모델 및 하위 모델)로 구성된 약 100 개의 응용 프로그램을 인쇄 중입니다.

현재 N + 1 개의 쿼리를 많이 수행하여 성능이 떨어지며 페이지가 매우 비효율적입니다.

질문 :이 데이터를 데이터베이스에서 가져 오는 효율적인 방법이 있습니까? 모든 하위 모델에 대해 includes() 양식을 가져 오려고했지만이 모델은 그 아래에있는 모델에 도움이되지 않습니다 (예 : financial_history 모델)

아이디어가 있으십니까?

답변

10

중첩 해시를 사용하여 하위 하위 모델에 액세스 해 보았습니까? 다음과 같음 :

@app = Application.includes(:first_submodel, 
          {:second_submodel => [:first_sub_submodel, :second_sub_submodel]}, 
          {:third_submodel => :third_sub_submodel}) 
관련 문제