Лучший способ построить ActiveRecord искатель, используя переменные И или ИЛИ? - PullRequest
0 голосов
/ 08 февраля 2011

Используя Rails3, мне нужно создать искатель, который включает в себя переменное число сравнений, определяемых динамически, со значениями в связанной ассоциации has_many, используя операторы И или ИЛИ, опять же, где и или или определяется динамически

Итак, допустим, у меня есть foo с has_many для баров, а бары имеют атрибут baz, и я хотел бы найти все foo, которые имеют связанный бар, где baz = some_value ИЛИ else_value и т. Д., И число Сравнений не известно заранее. Я знаю, что могу сделать это:

Foo.joins(:bars).where(:bars => {:baz=>"Find Me"})

или, используя строки:

Foo.joins(:bars).where("bars.baz = ?", a_value)

Похоже, лучший способ получить то, что я хочу, - это динамически построить строку, используемую в качестве первого аргумента второго примера. Это правда? Я не вижу ничего, что позволило бы мне предоставить дополнительные объединения ... где это позволило бы мне указать либо и, либо или также. Если бы я мог, то это был бы простой вопрос итерации по моему массиву возможных совпадений и инструкции для каждого значения, но я почти уверен, что это невозможно, и мой лучший вариант - это динамическая строка в качестве первого аргумента во втором примере. , Кроме того, я знаю, что могу сделать IN, но это сработает только для OR, а не для AND Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...