【发布时间】:2016-09-05 17:54:28
【问题描述】:
现在我使用这段代码来查找项目:
where("lower(name) like ?", "%#{search_word.downcase}%")
但它不适用于俄语字符。
所以我尝试了这个:
where("lower(name) like ?", "%#{search_word.mb_chars.downcase.to_s}%")
但它也没有工作。
我该怎么办?
更新:好的。如果我写 ilike 而不是 like 它似乎适用于 Postgres。我如何使它也可以与 sqlLite 一起使用? =)
【问题讨论】:
-
我想知道 JRuby 是否能更好地处理它?它可能使用 Java 功能,并且 Java 有一些出色的国际化。
-
@KeithBennett 太酷了。我将不得不安装 jruby 和 jdk 仅仅因为 1 行代码?=)
-
我意识到这对你来说可能还不够重要,但如果你确实有 JRuby,看看它是否能更好地工作会很有趣。我使用 rvm,并安装了 JRuby——如果你有一个可以测试它的脚本(包括 SQLite 设置),我很乐意运行它并报告结果。
-
想一想,因为它只是对
downcase的测试,它甚至不需要任何SQLite代码。当downcase被同时调用时,你可以给我两个字符串。 -
@user2950593 谢谢!我对其进行了测试,发现 JRuby 的小写字母也无法正确转换字符串,但从 JRuby 调用的 Java 确实 正确处理了它(参见 gist.github.com/keithrbennett/48295f6fd9ddcdf12a165218e7d900ad)。但这并不是说对我们有帮助。 ;)
标签: ruby-on-rails ruby postgresql sqlite internationalization