我有一个查询我用于搜索:这样的条件:
:conditions => ['family_name LIKE ? OR given_name LIKE ?',"%#{params[:search]}%","%#{params[:search]}%"]
查询在sqlite上本地工作正常,但是当我在Postgresql上推送到Heroku时,只有第一个%适用于family_name和given_name.换句话说,它将匹配出现在单词结尾但不出现在开头或中间的关键字.
例:
现有记录包含:family_name => “华盛顿”和:given_name => “乔治”
搜索“ington”或“rge”将检索此记录.搜索“Wash”或“Geo”不会.
我是一个新用户,对于rails来说我是个新手.在此先感谢您的帮助.
解
这是我正在使用的修复程序:
:conditions => ['LOWER(family_name) LIKE ? OR LOWER(given_name) LIKE ?',"%#{params[:search].downcase}%","%#{params[:search].downcase}%"]
解决方法
LIKE是Postgres中区分大小写的运算符.对于不区分大小写的模式匹配,请使用ILIKE或
other standard methods.