Делает направляющие 4, имеют поддержку ИЛИ запросы

Таким образом в направляющих 4 длинная желаемая функция для использования not запросы были добавлены.

Article.where.not(title: 'Rails 3')

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

Очевидно, я попробовал

Article.where(title: 'Rails 3').or(title: 'Rails 4')

Но это не работает.

62
задан 19 June 2013 в 17:41

7 ответов

Article.where(title: ['Rails 3', 'Rails 4']) то, как Вы сделали бы это в Активной Записи.

не возможно копировать любой произвольный SQL-запрос с помощью синтаксиса "направляющих-y". Но можно всегда просто передавать в литерале sql.

, Таким образом, Вы могли также сделать:

Article.where("articles.title = 'Rails 3' OR articles.title = 'Rails 4'")
90
ответ дан 31 October 2019 в 13:32

Это теперь работает в направляющих 5:

Article.where(title: 'Rails 3').or(Article.where(title: 'Rails 4'))

Пример кода в источнике Направляющих .

34
ответ дан 31 October 2019 в 13:32

Я знаю, что это - старый поток, но кто-либо еще ищущий решение этой проблемы мог бы найти этот код полезным:

Article.where(title: ["Rails 3", "Rails 4"])

, Возможно, который поможет Вам получить кого-то идущего в правильном направлении, не имея необходимость рисковать внедрением SQL.

5
ответ дан 31 October 2019 в 13:32

Кажется, что ведущее ответвление направляющих теперь поддерживает ИЛИ запрашивает. https://github.com/rails/rails/pull/16052

я предполагаю, что это будет в платформе со следующей главной версией.

4
ответ дан 31 October 2019 в 13:32

Направляющие 5 будут поддерживать его, но можно использовать этот бэкпорт для направляющих 4.2: https://github.com/Eric-Guo/where-or

3
ответ дан 31 October 2019 в 13:32

Наиболее распространенная альтернатива уже является ответом @gregates

Недавно был запрос получения по запросу в источнике направляющих

, Добавляют #any_of метод запроса для active_record, Который добавляет или функциональность к activerecord

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

его направляющие 3.2 и 4 совместимых

https://github.com/oelmekki/activerecord_any_of

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

12
ответ дан 31 October 2019 в 13:32

Можно использовать Squeel для более сложных запросов:

Article.where{(title == 'Rails 3') | (title == 'Rails 4')}

Это приводит к следующему SQL-запросу:

SELECT `articles`.* FROM `articles` WHERE ((`articles`.`title` = 'Rails 3' OR `articles`.`title` = 'Rails 4'))
1
ответ дан 31 October 2019 в 13:32

Другие вопросы по тегам:

Похожие вопросы: