Приоритет в предложении where с помощью плагина ez_where для ruby ​​на рельсах. - PullRequest
0 голосов
/ 01 марта 2012

Я работаю над проектом, который использовал этот плагин .Я действительно не могу использовать какой-либо другой плагин, чтобы делать то, что я должен делать.

Я использую это для создания предложения 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плагин для рубина на рельсах?Или если нет, то как мне вообще это сделать?

1 Ответ

0 голосов
/ 02 марта 2012
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
...