Rails - 不区分大小写的搜索条件
我有以下问题:
@users = User.find( :all,
:select => 'users.*',
:conditions => ["fname || ' ' || lname LIKE ?", '%'+"#{params[:q]}"+'%']
这里的问题是搜索输入 params[:q] 区分大小写。如何在我的 Rails 3 Heroku 应用程序中使其不区分大小写?
谢谢
I have the following:
@users = User.find( :all,
:select => 'users.*',
:conditions => ["fname || ' ' || lname LIKE ?", '%'+"#{params[:q]}"+'%']
Problem here is that the search input params[:q] is case sensitive. How can I make it case insensitive in my Rails 3 Heroku app?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对于 PostgreSQL 来说,要使 LIKE 不区分大小写,只需使用
ILIKE
。它根据活动区域设置工作。For PostgreSQL to get case insensitive LIKE just use
ILIKE
. It works according to the active locale.此问题的一个相当“常见”的解决方法似乎是使用 UPPER 函数将您的情况下的“fname”或“lname”转换为大写并转换 params[:q] 以及使用例如
upcase
。A fairly "common" workaround for this problem seems to be to use the
UPPER
function to convert in your case "fname" or "lname" into uppercase and convertparams[:q]
as well, using e.g.upcase
.或者...将其粘贴到您的模型中并通过传入字符串数组进行调用
以上适用于 Postgres 和 Sqlite
Alternatively... stick this in your model and call by passing in a string array
The above works with Postgres and Sqlite