【发布时间】:2017-01-09 10:50:13
【问题描述】:
我在 Rails 3 应用程序上执行以下操作
def test(str)
User.where("name REGEXP ?",str).last
end
使用上面的格式,rails 通常会处理输入内容。但是在少数情况下它会失败。
如果我使用
str = "hi\\"
我得到这个错误:-
ActiveRecord::StatementInvalid: Mysql2::Error: Got error 'trailing backslash (\)' from regexp: SELECT `users`.* FROM `users` WHERE (name REGEXP 'hi\\') ORDER BY `users`.`id` DESC LIMIT 1
如果我使用
str="hi("
我收到此错误
ActiveRecord::StatementInvalid: Mysql2::Error: Got error 'parentheses not balanced' from regexp: SELECT `users`.* FROM `users` WHERE (name REGEXP 'hi(') ORDER BY `users`.`id` DESC LIMIT 1
对于 str = "hi)" 这样的情况,它可以工作:-
在正则表达式 sql 中执行输入之前,是否有干净的 Rails 方式来处理输入?
【问题讨论】:
标签: mysql ruby-on-rails ruby ruby-on-rails-3