rct*_*eil 7 sql parameters ruby-on-rails find
我写了一个finder如下:
@cars = @cars.joins(:manufacturers).where("manufacturers.name ILIKE ?", params[:manufacturer].gsub!(/-/, ' '))
Run Code Online (Sandbox Code Playgroud)
params[:manufacturer]来自.parameterizeRails 的字符串形式.
问题是ILIKE无法正确匹配带有"'"或"&"的字符串.
举个例子,一些存储在我的数据库中的字符串及其参数化版本:
因此,当我在2的前半部分和2的第三部分之间进行ILIKE时,它不会创建匹配.与3.相同.1显然工作正常.
任何想法如何获得正确的匹配,即使字符串中的特殊字符?
这是这样做的方法:
@cars = @cars.joins(:manufacturers).where("manufacturers.name LIKE ?", "%#{params[:manufacturer].parameterize}%")
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你可以做到这一点,它看起来更干净:
search = params[:manufacturer].parameterize
@cars = @cars.joins(:manufacturers).where("manufacturers.name LIKE ?", "%#{search}%")
Run Code Online (Sandbox Code Playgroud)
由于这与 slug 系统非常相似,因此您应该添加一个新字段并将其命名为您认为合适的任何名称,只是不要忘记添加一个,index这样您就不会浪费时间在字符串中搜索。
您还可以添加一个before_create或before_save回调,以便在保存对象时以您计划搜索的格式自动创建它。
| 归档时间: |
|
| 查看次数: |
12889 次 |
| 最近记录: |