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