[英]rails - Case Insensitive Search Condition
我有以下幾點:
@users = User.find( :all,
:select => 'users.*',
:conditions => ["fname || ' ' || lname LIKE ?", '%'+"#{params[:q]}"+'%']
這里的問題是搜索輸入params [:q]區分大小寫。 如何在Rails 3 Heroku應用程序中使其不區分大小寫?
謝謝
要使PostgreSQL獲得不區分大小寫的LIKE,只需使用ILIKE
。 它根據活動的語言環境工作。
解決此問題的一個相當“常見”的解決方法似乎是使用UPPER
函數在您的情況下將“ fname”或“ lname”轉換為大寫並使用例如upcase
轉換params[:q]
。
或者...將其粘貼在模型中並通過傳遞字符串數組進行調用
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.