Таким образом в направляющих 4 длинная желаемая функция для использования not
запросы были добавлены.
Article.where.not(title: 'Rails 3')
Имеет подобную поддержку, добавленный для or
запросы, или они планирующий сделать его. Я ничего не мог найти путем просматривания информации о версии.
Очевидно, я попробовал
Article.where(title: 'Rails 3').or(title: 'Rails 4')
Но это не работает.
Article.where(title: ['Rails 3', 'Rails 4'])
то, как Вы сделали бы это в Активной Записи.
не возможно копировать любой произвольный SQL-запрос с помощью синтаксиса "направляющих-y". Но можно всегда просто передавать в литерале sql.
, Таким образом, Вы могли также сделать:
Article.where("articles.title = 'Rails 3' OR articles.title = 'Rails 4'")
Это теперь работает в направляющих 5:
Article.where(title: 'Rails 3').or(Article.where(title: 'Rails 4'))
Я знаю, что это - старый поток, но кто-либо еще ищущий решение этой проблемы мог бы найти этот код полезным:
Article.where(title: ["Rails 3", "Rails 4"])
, Возможно, который поможет Вам получить кого-то идущего в правильном направлении, не имея необходимость рисковать внедрением SQL.
Кажется, что ведущее ответвление направляющих теперь поддерживает ИЛИ запрашивает. https://github.com/rails/rails/pull/16052
я предполагаю, что это будет в платформе со следующей главной версией.
Направляющие 5 будут поддерживать его, но можно использовать этот бэкпорт для направляющих 4.2: https://github.com/Eric-Guo/where-or
Наиболее распространенная альтернатива уже является ответом @gregates
Недавно был запрос получения по запросу в источнике направляющих
, Добавляют #any_of
метод запроса для active_record, Который добавляет или функциональность к activerecord
, участник уже создал драгоценный камень, упаковывают не принятый
его направляющие 3.2 и 4 совместимых
https://github.com/oelmekki/activerecord_any_of
, я еще не попробовал его, но скоро хочу использовать, это выглядит хорошим мне.
Можно использовать Squeel для более сложных запросов:
Article.where{(title == 'Rails 3') | (title == 'Rails 4')}
Это приводит к следующему SQL-запросу:
SELECT `articles`.* FROM `articles` WHERE ((`articles`.`title` = 'Rails 3' OR `articles`.`title` = 'Rails 4'))