Rails搜索谓词逃脱字符

时间:2016-05-11 10:32:02

标签: ruby-on-rails oracle ransack

有没有办法告诉ransack使用哪个转义字符?

我创建了一个自定义谓词,让用户使用星号作为通配符(而不是%)。这样做是用百分号替换搜索词中的任何星号。

要让用户在百分号后搜索,我希望它们在搜索查询中被转义(实际的通配符星号除外)。

作为一个例子,我得到了一个名为“us%er_name”的用户。搜索“us%er_na *”应该返回此用户。为此,查询应该看起来像

SELECT * FROM users WHERE username LIKE 'us\%er\_na%' escape '\';

转义和替换工作正常,但我不知道如何在查询中获取“转义”。

通用解决方案将是首选,因为除了使用我的自定义谓词之外我不想做任何其他事情。

-e -

简而言之:

我想转义用户搜索字词,并在查询“user%name”后搜索提供类似以下内容的查询:

SELECT * FROM users WHERE username LIKE 'user\%name' escape '\';

0 个答案:

没有答案