2011-01-22 19 views
0

我有以下幾點:這裏軌道 - 不區分大小寫條件

@users = User.find(:all, 
         :select => 'users.*', 
         :conditions => ["fname || ' ' || lname LIKE ?", '%'+"#{params[:q]}"+'%'] 

問題是,搜索輸入PARAMS [:Q]的區分大小寫。我如何在我的Rails 3 Heroku應用程序中使其不區分大小寫?

感謝

回答

7

對於PostgreSQL不區分大小寫只使用ILIKE。它根據活動的語言環境工作。

+0

的任何特殊指標需要做出這種流暢運行?對於這個問題,任何索引都是? – AnApprentice 2011-01-23 00:10:53

3

一個相當「共同」的辦法解決這個問題似乎是使用UPPER功能,你的情況「FNAME」或「L-NAME」到大寫轉換及轉換params[:q]爲好,例如使用upcase

0

或者......在你的模型堅持這一點,並通過傳遞一個字符串數組

def self.find_all_by_lowercasing_name(str_array) 
    wrapped = str_array.collect { |a| "'"+ "#{a.downcase}" + "'" } 
    return MyModel.where("lower(\"my_models\".\"name\") IN (#{wrapped.join(', ')})") 
end 

上述工程在Postgres和SQLite

調用