我写了一个查找器,如下所示:
@cars = @cars.joins(:manufacturers).where("manufacturers.name ILIKE ?", params[:manufacturer].gsub!(/-/, ' '))
params[:manufacturer]
以一种由Rails生成的.parameterize
d字符串的形式出现。问题是ILIKE无法正确匹配其中包含“'”或“&”的字符串。
因此,例如,一些存储在我的数据库中的字符串及其参数化版本:
因此,当我在2的第一部分和2的第三部分之间进行ILIKE时,它不会创建匹配项。与3相同。1显然可以正常工作。
有什么想法即使字符串中有特殊字符也如何获得正确的匹配?
最佳答案
由于这与slug系统非常相似,因此您只需要添加一个新字段,然后将其命名为任何您认为合适的字段,就不要忘记添加index
,这样您就不会浪费时间在字符串中进行搜索。
另外,您可以添加before_create
或before_save
回调以在保存对象时以计划搜索的格式自动创建它。
关于sql - 使用ILIKE进行Rails查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28649702/