Поиск активной записи для частичных строк в столбце

Мне нужно выполнить поиск в одном журнале моделей после возврата результатов поиска продукта.

Есть ли способ поиска заголовка журнала только с частью полной строки?

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]}%")