如何逃避Salesforce搜索查询

时间:2015-02-10 05:30:50

标签: ruby-on-rails ruby ruby-on-rails-3 salesforce

我使用Salesforce ruby gem执行以下操作

@client.search("FIND {#{@email}}")

@email会返回用户的电子邮件地址。在测试期间,我有一个类似test+test@example.com的电子邮件地址,这导致了MALFORMED_SEARCH错误。我尝试在电子邮件上拨打to_json,但这并没有解决问题。我应该在这里做什么样的逃避?有没有通用的方法来做到这一点? (我想避免逃避特定字符,例如' +')

谢谢!

2 个答案:

答案 0 :(得分:2)

根据SOSL specification,+是保留字符,必须使用反斜杠进行转义。需要转义的所有字符均为? & | ! { } [ ] ( ) ^ ~ * : \ " ' + -

答案 1 :(得分:0)

要转义这些字符,您可以使用以下gsub

"email+special@example.net".gsub(/(\?|&|\||\!|\{|\}|\[|\]|\(|\)|\^|\~|\*|\:|\\|\"|\'|\+|\-)/){|special| "\\" + special }

原始答案:Escape special characters in ruby string to match Salesforce SOQL requirements