2014-04-16 18 views
11

Muszę wykonać wyszukiwanie w jednym dzienniku modelu, po zwróceniu wyników wyszukiwania produktu.Wyszukaj aktywny rekord dla częściowych ciągów znaków w kolumnie

Czy istnieje sposób wyszukiwania nagłówka czasopisma tylko z częścią pełnego ciągu?

def index 
    @product_results = Gemgento::Search.products(params[:query]) 
    @editorial_results = Journal.where("headline LIKE ?", "#{params[:query]}") 
end 

Na przykład. Powiedzieć mój ostatni przedmiot dziennik miał nagłówek: „przepełnienie stosu blogpost” jeśli kwerendy aktywny rekord:

@editorial_results = Journal.where("headline LIKE ?", "stack overflow") 

Jak mam go teraz, to nadal wymaga bezpośredniego meczu na sznurku.

Wyszukiwanie przez http://guides.rubyonrails.org/active_record_querying.html wydaje się, że jest to poprawny sposób, aby to zrobić, pomimo ostrzeżeń o wtrysku sql.

Czy istnieje sposób struktury wyszukiwania, aby zwrócić ostatni wpis? (bez korzystania z biblioteki wyszukiwania?)

+0

spróbuj 'gdzie ("nagłówek podoba?", "% Przepełnienie stosu%")' –

+1

co to jest Gemgento? –

Odpowiedz

9

Brakuje symbolu wieloznacznego "%" przed i po wyszukiwanym słowie.

def index 
    @product_results = Gemgento::Search.products(params[:query]) 
    @editorial_results = Journal.where("headline LIKE ?", "%#{params[:query]}%") 
end 

Oznacza to, że wszystko może nadejść przed parametrem zapytania i po nim.

1

można osiągnąć z Journal.where("headline LIKE ?", "%#{params[:query]}%")

2

Trzeba dodać znak % zapytaniu SQL

def index 
    @product_results = Gemgento::Search.products(params[:query]) 
    @editorial_results = Journal. 
     where("headline LIKE :query", { query: "%#{params[:query]}%"}) 
end 
Powiązane problemy