2012-03-01 2 views
0

나는이 을 사용하는 프로젝트를 진행 중이다. 나는 정말로해야 할 일을하기 위해 다른 플러그인을 사용할 수 없다.ez_where 플러그인을 사용하여 레일스에서 ​​루비를 사용하여 where 절을 우선 처리합니다.

다른 방법으로 작성된 쿼리에서 WHERE 절을 작성하는 데이 방법을 사용하고 있습니다. 내가하는 방법은 다음과 같습니다.

cond = EZ::Where::Condition.new 
if first_condition 
    cond.append "A > B" 
end 
if second_condition 
    cond.append "C < D" 
end 
if third_condition 
    cond.or "E > F" 
    cond.or "G > H" 
end 

문제는 첫 번째, 두 번째 또는 세 번째 조건의 모든 조합이 참일 수 있다는 것입니다.

Where A > B AND C < D AND (E > F OR G > H) 

그리고 만 첫 번째와 세 번째 조건을 경우하는 것은 다음 사실이다 :

Where A > B AND (E > F OR G > H) 

나는 루비에 대한 ez_where 플러그인에 그것을 어떻게하지만 모든 경우에, 나의 질의는 다음과 같이 있어야하는데 울타리? 아니면 그렇지 않다면 어떻게해야합니까?

답변

0
cond = EZ::Where::Condition.new 
if first_condition 
    cond.append "A > B" 
end 
if second_condition 
    cond.append "C < D" 
end 
if third_condition 
    cond.or "E > F" 
    cond.or "G > H" 
end 

난 그냥 것 위의 일을 정말 쉬운 방법을 실현

cond1 = EZ::Where::Condition.new 
if first_condition 
    cond1.append "A > B" 
end 
if second_condition 
    cond1.append "C < D" 
end 
cond2 = EZ::Where::Condition.new 
if third_condition 
    cond2.or "E > F" 
    cond2.or "G > H" 
end 
cond = EZ::Where::Condition.new 
cond.append cond