как включить целые поля в поиск searchkick?

Я использую следующий код для поиска с помощью SearchKick:

Book.search(q, 
            misspellings: { below: 5 }, 
            fields: [:name, :author, :pages], 
            order: { name: 'asc' }, 
            page: params[:page], 
            per_page: 20)

Когда я ищу name и author, все работает нормально.

Однако, когда я ищу 130 для page, он не ищет поле.

name и author — строковые поля модели Book, а page — целочисленное поле.

Я предполагаю, что 130 проходит как строку, и она неправильно пытается сопоставить целое число.

Как я могу сделать так, чтобы я мог искать по номерам страниц?


person kofhearts    schedule 26.02.2018    source источник


Ответы (1)


Вы пытались позвонить to_i на params[:page]?

Book.search(q, 
            misspellings: { below: 5 }, 
            fields: [:name, :author, :pages], 
            order: { name: 'asc' }, 
            page: params[:page]&.to_i, 
            per_page: 20)

Если вы правы, и он сравнивает целое число со строкой, это исправит это.

person SRack    schedule 26.02.2018
comment
извините, я пробовал и не работает. Я пошел в консоль и просто искал Book.search(120, fields: [:pages]), и он возвращает пустой результат, хотя есть записи со страницами 120. Почему searchkick не ищет целочисленные поля? - person kofhearts; 27.02.2018
comment
Если не наоборот и он ищет связи с обеих сторон? Не могли бы вы сделать быстрый снимок в консоли Book.search("120", fields: [:pages])? - person SRack; 27.02.2018