Ruby on rails 3: поиск с несколькими параметрами? - PullRequest
2 голосов
/ 29 октября 2011

У меня есть окно поиска, и мне нужно выполнить поиск по 2 параметрам: «заголовок» или «теги», используя запрос. Я могу заставить работать один параметр, но не два, пробовал 'ИЛИ', '||', ',' ничего не работает.

Какой ответ?

Оригинальный код: Book.where("title LIKE ?" , "%#{query}%")

Что мне нужно: Book.where("title LIKE ?" , "%#{query}%" OR "tags LIKE ?" , "%#{query}%")

Ответы [ 3 ]

8 голосов
/ 29 октября 2011
Book.where("title LIKE ? OR tags like ?" , "%#{query}%", "%#{query}%")

Сначала должен быть «полный» SQL-запрос, который содержит заполнители (?) в качестве первого аргумента для запроса where, а затем остальные аргументы являются просто заменой заполнителей.

Для получения дополнительной информации см. Руководство по запросам активной записи .

2 голосов
/ 29 октября 2011

Я предлагаю вам взглянуть на metawhere, который посвящен сложным запросам (я знаю, что это не так, но стоит заметить).

См. Railscast .

1 голос
/ 29 октября 2011

Из направляющих :

Client.where("orders_count = ? AND locked = ?", params[:orders], false)
...