Rails 如何在数据库中搜索字符串的第一部分和第二部分?

Rails how do I search in the first and second part of a string in the database?

对于我的应用程序,我想构建一个返回街道名称的搜索表单。但是当我使用 where('street like ?', 'wall') 它只有 returns: 'Wallstreet' 而不是例如: 'Second Wallstreet, The Wallstreet'

我还想 return 'Second Wallstreet, The Wallstreet' 但不想 'Notwallstreet' 的街道名称,其中 'Wall' 位于中间某处。

我用过'gem ransack',但我只发现选项包含。那也会 return 'Notwallstreet'

如果您使用的是 postgres,则可以按照 here 中所述使用 SIMILAR TO。

where('street similar to ?', '[[:<:]]Wall')

您需要在单词的两边加上 % 才能搜索 prefix/infix/postfix

where('street like ?', '%wall%')

PS:

只要你不需要中缀:

where('street like ? or ?', '%wall', 'wall%')

这是你应该小心的事情。如果您在 street 字段上有索引,后缀匹配将不会使用它(并且前缀会)