Несколько условий фильтрации в предложении области действия класса модели Rails - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно дать 2 условия фильтра в предложении scope класса модели в моем коде Ruby on Rails.

Я пробовал это:

scope :post_total, -> {where(division: 'PMT', 'key between ? and ?, 3, 7)}

деление и ключ - это имена двух столбцов, по которым мне нужно выполнить фильтрацию.

Итак, мне нужно реализовать это условие в основном:

WHERE DIVISION = 'PMT' AND KEY BETWEEN 3 AND 7

Я получаю ошибку в моем состоянии области Rails, показанном выше.Как правильно написать это условие области действия?

Пожалуйста, помогите!

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Вы можете связать предложения where, чтобы использовать синтаксис Rails и прямой SQL:

scope :post_total, -> { where(division: 'PMT').where('key BETWEEN ? AND ?', 3, 7) }

Rails выполнит это как один запрос, структурированный нужным образом.

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

0 голосов
/ 17 октября 2018

Я бы пошел с этим:

scope :post_total, -> { where division: 'PMT', key: 3..7 }
0 голосов
/ 17 октября 2018

Это должно сделать

scope :post_total, -> {where("division = ? AND key BETWEEN ? AND ?", 'PMT', 3,7)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...