对于我的应用程序,我想构建一个返回街道名称的搜索表单。但是当我使用where('street like ?', 'wall')
时,它只会返回:'Wallstreet',而不是例如:'Second Wallstreet,The Wallstreet'
我想要回归'第二壁垒,华尔街'而不是'Notwallstreet'的街道名称,其中'Wall'位于中间位置。
我使用过'gem ransack',但我只找到了包含的选项。而且还将返回'Notwallstreet'
答案 0 :(得分:1)
如果你正在使用postgres,你可以按照here所述使用SIMILAR TO。
where('street similar to ?', '[[:<:]]Wall')
答案 1 :(得分:1)
您需要在单词的两边放置%
以搜索前缀/中缀/后缀
where('street like ?', '%wall%')
PS:
只要你不需要中缀:
where('street like ? or ?', '%wall', 'wall%')
这是你应该小心的事情。如果你在street
字段后面有一个索引后缀匹配,则不会使用它(并且前缀为)