使用Postgres处理Rails应用服务器中查询参数中的转义序列

时间:2018-11-13 06:44:03

标签: ruby-on-rails postgresql sql-like

query_string = params[:q]
model.where("name ILIKE ? ", "#{query_string}").limit(10)

在控制器中,我有以上几行

params[:q]是用户输入。

每当用户输入以\结尾,例如police \时,Postgres都会引发此错误:

ActionView::Template::Error (PG::InvalidEscapeSequence: ERROR:  LIKE pattern must not end with escape character.

我们如何妥善处理此类案件?

1 个答案:

答案 0 :(得分:1)

使用其他转义字符,例如:

WHERE name ILIKE 'pattern\' ESCAPE '/'

如果您没有安全的转义符,则可以将其加倍:

WHERE nane ILIKE replace('pattern\', '\', '\\')