Sam*_*ing 9 postgresql ruby-on-rails diacritics
我有一个通常包含变音符号Location的字段的模型name- 例如"Rhône-Alpes","Midi-Pyrénées"和"Île-de-France".
在我的应用程序中,此模型以几种不同的方式使用,特别是对于名称的查询.例子包括:
Location.find_by(name: 'Rhône-Alpes')
Location.find_or_create_by(name: 'Rhône-Alpes', country: 'France')
Run Code Online (Sandbox Code Playgroud)
这些find方法的参数因应用程序而异.我的问题是:如何在unaccent()每次引用名称字段时确保调用某个Postgres函数(在这种情况下)?这意味着我可以搜索"Rhone"和"Rhône",并获得相同的结果.
是否最好覆盖find_by和find_or_create_by方法?如果是这样,最好的方法是什么?
将逻辑下推到数据库层总是好的,但是如果您一直在处理许多不同的项目,那么将来您可能需要在不取消重音的情况下执行查找,然后在无法执行查找时遇到问题易于调试,因此在执行此操作时必须始终小心。
\n\n不要重写 find_by 方法,不建议这样做,因为您可能会执行标准 find_by 并产生不可预见的后果。
\n\n您是否考虑过在 find_by 之前清理输入?
\n\n>> ActiveSupport::Inflector.transliterate("Rh\xc3\xb4ne-Alpes")\n=> "Rhone-Alpes"\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |