2016-09-15 68 views
6

Merhaba, Ruby On Rails'de LIKE yan tümcesini kullanıyorum, "more" yazarak kayıtları aramaya çalıştığımda hiçbir şey döndürmüyor, ancak "Diğer" ile ilgisi, o zaman Daha anahtar kelimesini içeren kayıtları döndürür, bu nedenle
Şimdi benim sorgu biz Case-duyarsız, evet eğer yapabilirsiniz edilirCase-Sensitive davranır gibi görünüyor o zaman lütfen bana bildirin."Like Clause" Durum Duyarsızlığı

Job.where('title LIKE ? OR duration LIKE ?', "%#{params[:search]}%", "%#{params[:search]}%") 

Teşekkür: Burada

Şu anda kullanıyorum sorgusu olur.

cevap

12

Postgres'i kullandığınızı farz ediyorum.

Sen ILIKE

Job.where('title ILIKE ? OR duration ILIKE ?', "%#{params[:search]}%", "%#{params[:search]}%") 

kullanabilirsiniz Veya bazı zor kesmek lower():

Job.where('lower(title) LIKE lower(?) OR lower(duration) LIKE lower(?)', "%#{params[:search]}%", "%#{params[:search]}%") 
+0

Tamam teşekkür gibi bir şey deneyin hangisi kullanmak? –

+0

'LIKE/ILIKE' tercih edildi çünkü daha temiz. –

+0

ok teşekkürler alot :) –

0

sen önermek misiniz, bu kadar bu

def query_job(query) 
    job_query = "%#{query.downcase}%" 
    Job.where("lower(title) LIKE '#{job_query}' or lower(duration) LIKE '#{job_query}'") 
end 

query_job(params[:search]) 
+1

[' Sorguyu oluşturmak için dize birleştirme yaptığınızda bu tehlikelidir. '] (http://guides.rubyonrails.org/security.html#sql-injection) –