我有以下内容:
@users = User.find( :all,
:select => 'users.*',
:conditions => ["fname || ' ' || lname LIKE ?", '%'+"#{params[:q]}"+'%']
问题在于搜索输入参数[:q]区分大小写。如何在Rails 3 Heroku应用程序中使其不区分大小写?
由于
答案 0 :(得分:7)
对于PostgreSQL获取不区分大小写的LIKE只使用ILIKE
。它根据活动的区域设置工作。
答案 1 :(得分:3)
此问题的一个相当“常见”的解决方法似乎是使用UPPER
函数将您的情况“fname”或“lname”转换为大写并转换params[:q]
,例如使用upcase
。
答案 2 :(得分:0)
或者......将它粘贴在你的模型中并通过传入一个字符串数组来调用
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