0

순수한 SQL 쿼리와 관련하여 가입하는 방법 :액티브 - 나는 다음과 같은 쿼리를하고있어

TaskCheck.find_by_sql ["SELECT task_checks.*, tasks.* FROM task_checks INNER JOIN tasks ON task_checks.task_id = tasks.id"] 

그것은 TaskCheck 객체를 반환하지만 내가 작업 필드를 읽으려고 할 때 (쿼리에 합류는) 다음 액티브가 수행을 각 개체에 대한 별도의 선택 쿼리 그것은 내가 가입 할지라도 내 협회를 게으르게로드하고있다. 어떻게 수정해야합니까?

추신 : 순수 SQL을 사용하고 싶습니다. 그 이유는 AR "includes"메쏘드가 일대일 연관성을 위해 부적절한 연관성에 대한 두 번째 SELECT를 실행하고 가능한 최상의 성능을 원하기 때문입니다.

sql = "SELECT task_checks.*, tasks.* FROM task_checks INNER JOIN tasks ON task_checks.task_id = tasks.id" 
records_array = ActiveRecord::Base.connection.execute(sql) 

그런 다음, records_array이 선택 쿼리에 지정된 열이 모두 반환 행을 포함합니다 :

+0

순수 SQL을 사용하지 않으면 이렇게 간단합니다. 왜 순수한 SQL을 사용합니까? –

+1

시스템의이 부분이 하루에 수천 번 실행되기 때문에 가능한 최상의 성능을 원합니다. – Jirico

+0

그리고 이제는 AR이 "포함"하는 방법이 연관에 대해 별도의 SELECT를 수행하기 때문에 주된 이유가 있음을 기억하십시오. 이는 레일스와 일대 다 연상을위한 좋은 접근법이지만 일대일 연계에는 효과적이지 않습니다. – Jirico

답변

0

유 같은 당신이 원하는 열을 지정할 수있는 방법이있다.