Searchkick - диапазоны на 2 отдельных столбца - PullRequest
0 голосов
/ 07 февраля 2019

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

В моей модели у меня есть min_age и max_age.Пользователь может выбрать несколько возрастов для фильтрации, например: параметры 10,11,12,13,14,15,16,17,18 , а пользователь выбирает 11, 13 и 16. Какя бы отфильтровал модель от выбранных опций?

Кроме того, я думаю, что мне нужно изменить выбранные опции на диапазон, чтобы вышеприведенные значения стали 10-11, 12-13 и 15-16, чтобы диапазонФильтр может работать с использованием аргументов gt и lt.Однако, может быть, фильтр диапазона не будет работать для этого?

EDIT

В SQL я могу сделать следующее, которое возвращает то, что я ожидаю увидеть, поэтому мне просто нужно преобразовать это вСинтаксис эластичного поиска через Searchkick.

  select * from events
  where (min_age <= 11 AND max_age >= 11)
  OR (min_age <= 13 AND max_age >= 13)
  OR (min_age <= 16 AND max_age >= 16)

1 Ответ

0 голосов
/ 08 февраля 2019

Не вдаваясь в то, являются ли диапазоны лучшим вариантом для логики вашего приложения, для достижения эквивалента вашему SQL вы можете использовать что-то вроде следующего:

Event.search(
  "*",
  where:  {
            _or: [
                   {min_age: {lte: 11}, max_age: {gte: 11)},
                   {min_age: {lte: 13}, max_age: {gte: 13)},
                   {min_age: {lte: 16}, max_age: {gte: 16)}
                 ]
          }
)
...