繁体   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