簡體   English   中英

rails-不區分大小寫的搜索條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM