2014-11-25 5 views
0

ActiveRecord를 사용하여 쿼리를 해결하는 데 문제가 있습니다. "에이전트가 만든 여행과 관련된 반환 일정이"ActiveRecord 조인 쿼리 관련 문제

이 내가 뭘하려 : 쿼리 설명입니다

trips = Trip.where("agent_id = ? AND is_itinerary", params[:id]) 
     .joins('LEFT JOIN itineraries ON trips.id = itineraries.trip_id LEFT JOIN users ON itineraries.user_id = users.id') 
     .select('trips.*, itineraries.status, users.*') 

결과는 괜찮을 것 같다,하지만 문제는의 반환 ID입니다 기록. 그들은 복제되고 Trip.id 대신에 반환 ID가 User.id 인 것처럼 보입니다.

누군가 해결 방법에 대한 아이디어가 있습니까? 기본 그룹 전략을 변경했을 수 있습니까?

테이블은 다음과 같습니다 일정 (아이디, trip_id, USER_ID), 여행 (ID, ...), 사용자 (아이디, ...)

+0

''. *'이'trips. * '에 나오는'id' 칼럼을 오버라이드하고 있다고 생각합니다. 두 개의 별도 쿼리 대신 한 번에 모든 내용을로드하는 이유가 있습니다 열망하는로드? – Surya

+0

음, 특별한 이유가 없습니다. 쿼리를 두 부분으로 나눌 것을 제안 하시겠습니까? 첫 번째 여정에는 사용자가 참여하는 일정이 있어야합니다. 그렇지 않습니까? – halbano

답변

0

마지막으로 내가 원래 쿼리를 분리 문제를 해결할 수 :

그런 식으로하면 Users. * 속성은 Trips 특성을 무시하지 않습니다.