2013-03-11 67 views
3

我已經編寫了可以正常工作的搜索功能,但我希望它不區分大小寫。
我該如何讓它變得不敏感,儘管我不想改變條件,因爲它運行的很好。所有這四個參數都是可選的,如果它們中的任何一個都基於它的工作條件存在的話。在rails和postgresql中使用鍵值進行不區分大小寫的搜索

conditions = {} 
conditions['first_name'] = params[:first_name] unless params[:first_name].blank? 
conditions['last_name'] = params[:last_name] unless params[:last_name].blank? 
conditions['specialities.name'] = params[:speciality] unless params[:speciality].blank? 
conditions['locations.zipcode'] = params[:zipcode] unless params[:zipcode].blank? 

search = Model.using_scope.where(conditions) 

我使用PostgreSQL作爲區分大小寫的數據庫。

回答

5

嘗試使用的LOWER(SQL)的組合和downcase(紅寶石)

search = Model.using_scope 
    search = search.where('LOWER(first_name) = ?', params[:first_name].downcase) unless params[:first_name].blank? 
    search = search.where('LOWER(last_name) = ?', params[:last_name].downcase) unless params[:last_name].blank? 
    search = search.where('specialities.name = ?', params[:speciality]) unless params[:speciality].blank? 
    search = search.where('locations.zipcode = ?', params[:zipcode]) unless params[:zipcode].blank? 
+0

由於jvnill。這是工作 :) – 2013-03-11 14:36:22

相關問題