2012-03-25 11 views

Odpowiedz

25

Można użyć ILIKE w gdzie zamiast:

Konkurrencer.where("title ILIKE ?", "%#{params[:q]}%").limit(4) 

Od Doc:

Kluczowym słowem ILIKE mogą być używane zamiast chcą, aby mecz wielkości liter zgodnie z aktywne ustawienia regionalne. Nie jest to w standardzie SQL , ale jest rozszerzeniem PostgreSQL.

+0

właśnie znalazłeś http://www.postgresql.org/docs/8.0/static/ functions-matching.html –

+4

Proszę nie używać podręczników z przestarzałych wersji. Zastąp "8.0" w linku swoim odpowiednim numerem wersji (lub użyj "current" zamiast) –

+0

@a_horse_with_no_name Dzięki za wskazanie, że ... zrobione dla odpowiedzi – ScottJShea

2

Do korzystania z uwzględnieniem wielkości liter w poszukiwaniu z PostgreSQL za pomocą Dolny ...

Przykład:

def self.search(client, date_start, date_end) 
     joins(:customer).where("LOWER(customers.name) LIKE ? AND date >= ? AND date <= ?", "%#{client}%", date_start, date_end) 
end 
+0

Dobre rozwiązanie, ponieważ działa z PostgreSQL i Sqlite. Nie testowałem z MySQL. W moim przypadku musiałem skreślić wyszukiwany termin, dla inst. "% # {client.downcase}% –

Powiązane problemy