我有以下幾點:這裏軌道 - 不區分大小寫條件
@users = User.find(:all,
:select => 'users.*',
:conditions => ["fname || ' ' || lname LIKE ?", '%'+"#{params[:q]}"+'%']
問題是,搜索輸入PARAMS [:Q]的區分大小寫。我如何在我的Rails 3 Heroku應用程序中使其不區分大小寫?
感謝
我有以下幾點:這裏軌道 - 不區分大小寫條件
@users = User.find(:all,
:select => 'users.*',
:conditions => ["fname || ' ' || lname LIKE ?", '%'+"#{params[:q]}"+'%']
問題是,搜索輸入PARAMS [:Q]的區分大小寫。我如何在我的Rails 3 Heroku應用程序中使其不區分大小寫?
感謝
對於PostgreSQL不區分大小寫只使用ILIKE
。它根據活動的語言環境工作。
一個相當「共同」的辦法解決這個問題似乎是使用UPPER
功能,你的情況「FNAME」或「L-NAME」到大寫轉換及轉換params[:q]
爲好,例如使用upcase
。
或者......在你的模型堅持這一點,並通過傳遞一個字符串數組
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
調用
的任何特殊指標需要做出這種流暢運行?對於這個問題,任何索引都是? – AnApprentice 2011-01-23 00:10:53