2013-04-25 2 views
0

저는 여기에서 일하는 3 가지 모델 인 사용자, 거래 및 투자가 있습니다.레일 쿼리 작성에 도움이 필요합니다.

사용자 사용자 내가 모든 투자를 찾으려면 사용자

에 속하는 투자를 처리 속하는

거래는 거래는 많은 투자

투자

을 가지고 사용자에게 속한 많은 투자가 많은 거래를 가지고 해당 투자에 대해 deal.deal_type_id = 3 인 사용자.

답변

2

연결을 설정했다면 매우 간단합니다.

# user.id = 1 
    User.find(1).deals.where(:deal_type_id => 3)  
+0

모든 사용자를 찾을 것 즉하지

당신은 이미 당신에 대한 투자를 찾으려는 사용자가 검색 한 가정 누구와 타입 3 거래가 있니? – prater

+1

@stephen, 콘솔에서 (레일 c) 확인할 수 있습니다. 이 예제를 업데이트했습니다. 조금 더 좋았습니다. 그것을하는 더 많은 방법이 있습니다. – Roger

+0

그래, 이제 더 이해가됩니다. – prater

1

squeel 보석을 사용하면 상당히 직관적입니다. @Stephen처럼

user.investments.joins{ deals }.where { deal.deal_type_id == 3 } 
+0

나는 squeel gem을 설치 한 후 콘솔에서 "NoMethodError : undefined method'for" ": String"을 시도했습니다. – xxyyxx

+0

whoops - 조인, 조인이 아닙니다 - 또한 'user'가 여기에 있습니다. 이미 검색했습니다. – prater

0

가 말했지만 액티브 레코드에 대해 :

type = 3 
user.investments.joins('deals').where('deals.deal_type_id == ?', type) 
+0

== MySQL과 같이 특정 db 백엔드가 없을 수도 있습니다. – Roger

관련 문제