Rails 4:如何在控制台中进行简单的通配符搜索

8

如何在控制台上快速进行字段通配符搜索? 我不需要防止SQL注入。

我正在使用PostgreSQL

搜索包含“emerging”的字符串的title

这个方法可以工作,但有点麻烦。 不知道是否有简写方法?

Product.where("title @@ :q", q: "emerging")

同样笨重的方法,在Rails 4中似乎已经不再适用于我:

Product.where("title ILIKE ?", "emerging")
Product.where("title ilike :q", q: "emerging")

我猜我正在寻找像 Product.where(title: "*emerging*") 这样的东西。
2个回答

16
这应该可以做到:
word = 'emerging'
Product.where('title ILIKE ?', "%#{word}%")
  • ILIKE使搜索不区分大小写(PostgreSQL功能!)
  • "%"通配符使得搜索可以匹配标题中包含单词"word"及其前后可能带有其他字符的所有产品。

我一直在寻找解决方案,只需要在“like”上添加一个“i”就可以了。甚至活动记录文档中也没有ilike....唉。 - nerdgasms
@nerdgasms,“like”或“ilike”函数与“ActiveRecord”无关,而与您使用的数据库系统有关。 - MrYoshiji

4

使用LIKE,像这样:

Product.where('title LIKE ?', '%emerging%')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接