Поиск активной записи для частичных строк в столбце
Мне нужно выполнить поиск в одном журнале моделей после возврата результатов поиска продукта.
Есть ли способ поиска заголовка журнала только с частью полной строки?
def index
@product_results = Gemgento::Search.products(params[:query])
@editorial_results = Journal.where("headline LIKE ?", "#{params[:query]}")
end
Например. Скажем, у моего последнего объекта журнала был заголовок: "blogpost"
если я запрашиваю активную запись с помощью:
@editorial_results = Journal.where("headline LIKE ?", "stack overflow")
Как я уже сейчас, он по-прежнему требует прямого совпадения в строке.
Поиск через http://guides.rubyonrails.org/active_record_querying.html кажется, что это правильный способ сделать это, несмотря на предупреждения sql-инъекции.
Есть ли способ структурировать поиск, чтобы он возвращал последнюю запись? (без использования библиотеки поиска?)
Ответы
Ответ 1
Вам не хватает шаблона "%" до и после поискового запроса.
def index
@product_results = Gemgento::Search.products(params[:query])
@editorial_results = Journal.where("headline LIKE ?", "%#{params[:query]}%")
end
Это означает, что все может появиться до и после параметра запроса.
Ответ 2
Вам нужно добавить знак %
в ваш SQL-запрос
def index
@product_results = Gemgento::Search.products(params[:query])
@editorial_results = Journal.
where("headline LIKE :query", { query: "%#{params[:query]}%"})
end
Ответ 3
вы можете достичь этого с помощью Journal.where("headline LIKE ?", "%#{params[:query]}%")