2011-02-24 2 views
0

내가 할 경우 :는에서 관련 모델을 사용하여 3.0 원 하나 협회 레일 WHERE 절

conditions = {:first_name => 'Chris'} 
Patient.joins(:user).find(:all, :conditions => conditions) 

그것은 생산 (그리고 FIRST_NAME이 환자 테이블에 있지 않기 때문에 실패)

SELECT "patients".* FROM "patients" INNER JOIN "users" ON "users"."id" = "patients"."user_id" WHERE "patients"."first_name" = 'Chris' 

내가 필요 사용자 모델의 필드를 쿼리하고 Patient 객체를 가져올 수 있습니다. 이것이 가능한가? 당신에게 조건 해시를 변경

답변

0

이 시도 :

conditions = ['users.first_name = ?', 'Chris'] 
Patient.joins(:user).find(:all, :conditions => conditions) 
+0

이것이 작동하는 것 같습니다. 이것이 쿼리를 수행하는 올바른 방법입니까? –

+0

조건이 단지 하나의 테이블의 속성보다 더 복잡해 지 자마자 배열 표기법을 사용하고 싶습니다. 추가 레일스 설탕의 경우 레일스 3에서이 형식을 사용할 수 있습니다 :'Patient.joins (: user) .where ([users.first_name =? ','Chris '])' – ctcherry

0

시도가 :

conditions = {'users.first_name' => 'Chris'} 

나는 레일 2.3에서이 스타일을 사용했습니다, 그리고 그것은 나를 위해 큰 일했습니다. 건배!

+0

사용하는 경우 : 조건 => 조건을 수행 쿼리가 탈출 얻을? –

+0

그들은 역시 나타납니다 ... –

+0

@Chris 네, 그렇습니다. [여기] (http://api.rubyonrails.org/classes/ActiveRecord/Base.html)는 관련 문서입니다. "조건"섹션을 참조하십시오 (두 번째 또는 세 번째, 조금만 아래로). 건배! –