有没有办法告诉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 '\';