1

중첩 된 포함을 연관과 함께 사용할 때 where 절에 OR을 사용해야합니다. 다음과 같이 내가 액티브 쿼리가 있습니다또는 where 절에서 연관이있는 중첩 된 포함 또는 조인으로 작업 할 때

Inventory.includes(:category,:inventory_tiers,:modifiers=>[:modifier_measures,:modifier_tiers]) 
    .where(
    :categories => { category_tag: 'Dry'}, 
    :location_id =>12, 
    :inventory_tiers => {:tier => 1}), 
    modifiers: {category_tag:"Wet"}, 
    modifier_tiers: {tier:1} 
) 

절에서 사용하는 곳에있는 모든 조건. 하지만 내가 사용하려는 OR 마지막 두 가지 조건이 무엇인가 등에 :

Inventory.includes(:category,:inventory_tiers,:modifiers=>[:modifier_measures,:modifier_tiers]).where("categories.category_tag=? AND location_id=? AND inventory_tiers.tier = ? OR modifiers.category_tag=? OR modifier_tiers.tier=?", "Wet",12,1,"Wet",1).select("inventories.id,inventories.name,inventories.photo,inventory_tiers.sell_price, modifiers.id,modifiers.name,modifiers.price,modifier_measures.id as measure_id,modifier_measures.name as measure,modifier_measures.price as measure_price,modifier_measures.measure_value") 

하지만 작동하지 않습니다. 구문을 어떻게 다시 쓸 수 있습니까?

+0

우선, 다른 버전의 레일 태그가 많이 있습니다. 실제로 어떤 버전을 실행하고 계십니까? 그 부분에 대해 문자열을 사용해야한다고 말한 것입니다. 이 외의 다른 것에 대해 작동하지 않는 것은 아마도 일부 괄호가 누락되었을 것입니다. – engineersmnky

+0

실제로 사용하는 레일 버전은 무엇입니까? 태그를 정리하십시오. –

+0

"작동하지 않는"것은 무엇입니까? 오류 메시지? 예상되는 행동? 실제 행동? –

답변

0

사용중인 레일스의 실제 버전을 모르면 Rails 3이라고 가정합니다 ... Arel을 사용하는 것이 좋습니다. 다음과 같이 입력하십시오 :

위 테스트를 거치지는 않았지만 위 경로는 올바른 길을 찾아줍니다.