如何使用Rails控制台搜索数据库中的子字符串?

时间:2010-12-25 20:57:06

标签: ruby-on-rails

我们知道      Things.where(“topic =?”,“blah”) 搜索与“blah”匹配的主题

但是,如果我想搜索包含“bla”

的主题,该怎么办?

我该怎么做?

1 个答案:

答案 0 :(得分:10)

这是描述它的post

基本上,您使用SQL LIKE expression来匹配包含某些内容的字符串。使用where("topic like ?", "%bla%")可以解决问题。

但是,天真的解决方案很容易因缺乏消毒而受到攻击。如果用户键入自己的%通配符,他可以获取您不想提供的数据!上面的帖子建议您手动清理此类用户输入:

escaped_str =  "bla".gsub ('%', '\%').gsub ('_', '\_')
Topic.where("topic like ?", "%" + escaped_str + "%")