Как искать подстроки в базе данных с помощью консоли Rails? - PullRequest
6 голосов
/ 25 декабря 2010

Как мы знаем, Things.where ("topic =?", "Blah") ищет темы, соответствующие "blah"

Однако, что если я хочу искать темы, содержащие "bla"

Как мне это сделать?

1 Ответ

10 голосов
/ 26 декабря 2010

Вот запись , которая описывает его.

В основном, вы используете SQL LIKE выражение для сопоставления строк, которые содержат что-то.Использование where("topic like ?", "%bla%") подойдет.

Однако наивное решение подвержено атакам из-за отсутствия дезинфекции.Если пользователь вводит собственный символ подстановки %, он может получить данные, которые вы не хотите предоставлять!Пост выше предполагает, что вы вручную дезинфицируете такие пользовательские данные:

escaped_str =  "bla".gsub ('%', '\%').gsub ('_', '\_')
Topic.where("topic like ?", "%" + escaped_str + "%")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...