У меня есть веб-приложение, где я хочу, чтобы обеспечить расширенный поиск, в котором пользователь вводит произвольное количество запросов, соединенные И и/или ИЛИ, вроде этого:Rails Gem для Поиск
(введенный в поле поиска на веб-странице)
name = "john" OR (occupation = "gardener" AND hobby.main = "reading")
в предыдущем post я успешно реализовала систему, в которой я непосредственно преобразовывать запросы, отформатированные как указано выше, в допустимых операторов SQL, и кормить их прямо в SQL для запроса к базе данных.
Это работало, но теперь я беспокоюсь о трех вещах:
- Это навлекает инъекции SQL
- Если ввод пользователя недействителен SQL выдает ошибку, которая не очень красиво ... были некоторые устраняя эти исключения (хотя эта часть выполнима).
- Код просто кажется действительно взломанным, и мне интересно, есть ли лучший способ.
Ну, я слышал, что есть лучший способ, используя поисковые камни.
Однако у меня возникли проблемы с поиском драгоценных камней, которые соответствуют моим потребностям. Многие из драгоценных камней кажутся toocomplex за то, что мне нужно, и ничто из того, что я нашел, не дало понять, как именно вы можете реализовать именно то, что я ищу, - где пользователь вводит динамическое число запросов, связанных с AND/OR заявления.
Точно, как дорого стоить просто преобразовать оператор прямо в синтаксис SQL и ввести его прямо, как я делаю прямо сейчас? Насколько легко включить один из этих драгоценных камней для чего я хочу? Что бы сделал опытный разработчик Rails? Я полный noobie для Rails, поэтому у меня нет опыта в этом.
Ну, это не совсем запросы свободной формы :) –
Ваш пример объединяет имя, описание, email и article_title с помощью инструкций OR. Что делать, если мне нужно учитывать любую комбинацию этих операторов с любой смесью операторов AND, OR и NOT, ни одна из которых не указана до выполнения? Я просмотрел Ransack немного, но все еще не вижу никакого простого способа сделать это. – ineedahero