我们知道 Things.where(“topic =?”,“blah”) 搜索与“blah”匹配的主题
但是,如果我想搜索包含“bla”
的主题,该怎么办?我该怎么做?
答案 0 :(得分:10)
这是描述它的post。
基本上,您使用SQL LIKE
expression来匹配包含某些内容的字符串。使用where("topic like ?", "%bla%")
可以解决问题。
但是,天真的解决方案很容易因缺乏消毒而受到攻击。如果用户键入自己的%
通配符,他可以获取您不想提供的数据!上面的帖子建议您手动清理此类用户输入:
escaped_str = "bla".gsub ('%', '\%').gsub ('_', '\_')
Topic.where("topic like ?", "%" + escaped_str + "%")