Оператор ИЛИ в предложении WHERE с Arel в Rails 4.2

Следующий код создал действительныйwhere оговорка сOR оператор в Rails 4.1

MyModel.where(
  MyModel.where(attribute1: 1, attribute2: 2).where_values.reduce(:or)
)

Что примерно эквивалентно SQL

select * from my_models where (attribute1 = 1 OR attribute2 = 2)

В Rails 4.2 тот же код генерирует SQL-запрос с пропущенными значениями для его параметров связывания

select * from my_models where attribute1 =  OR attribute2 =  

... и генерирует ошибку из-за пропущенных значений для связанных значений.

Что такое эквивалентный код вRails 4.2 создать правильный запрос с оператором ИЛИ?

Редактировать:

Решение требуетArel::Nodes::Node производный объект, который будет использоваться таким образом, чтобы он сам мог быть объединен с другими условиями с помощью групп AND и OR.

rel = MyModel.where(attribute1: 1, attribute2: 2)
conditions = [rel.where_values.reduce(:or).to_sql, *rel.bind_values.map(&:last)]

MyModel.where(conditions)

conditions var должен быть производным отArel::Nodes::Node, Вышеупомянутое решение работает для простых запросов, но для более сложных запросов,conditions должен быть узлом Arel для передачи в последний метод запроса.

Ответы на вопрос(3)

Ваш ответ на вопрос