2014-10-15 4 views
0

번역 쿼리 :globalize3 쿼리 나는이 개 모델을 가지고 속성

SELECT "products".* FROM "products" 
INNER JOIN "genders" ON "genders"."id" = "products"."gender_id" 
WHERE "genders"."name" = 'male'` 

하지만이 같은 모양의 SQL 쿼리가 필요하다고 생각합니까?

SELECT * FROM products 
INNER JOIN genders on genders.id = products.gender_id 
INNER JOIN gender_translations on gender_translations.gender_id = genders.id 
WHERE gender_translations.name = 'male'; 

그렇다면이 SQL 쿼리와 동일한 레일을 어떻게 만들 수 있습니까?

답변

0

Product.joins(gender: :translations).where(gender: { translations: { name: 'male' }})의 라인을 따라 뭔가 내가 믿는 트릭을해야합니다.

joins(gender: :translations)은 중첩 된 내부 조인입니다. 따라서 products ->gendersgenders ->gender_translations에 합류하셨습니다.

where 해시 구문은 SQL : where("gender_translations.prompt = 'male'")을 생성하기위한 것입니다. 해시 구문이 올바르지 않거나/싸우면 방금 언급 한 원시 SQL로 되돌아갑니다. 그것은 틀림없이 더 확실하게 어쨌든입니다!

+0

답장 @ dleve123에 감사하지만'Product.joins (성별 : 번역) .where (성별 : {번역 : {이름 : '남성'}})'내가 요청했을 때했던 일과 정확히 같습니다. 이 질문, 그리고 결국 당신이 제안한 방법과 같은 레일에 원시 SQL을 작성했습니다. 나중에 오래된 오류 메시지를 나중에 조사하고 거기에서 살펴볼 수 있습니다. – maxhungry