gpt4 book ai didi

ruby-on-rails - rails 4 : Always use a Postgres function for a certain model field

转载 作者:行者123 更新时间:2023-11-29 11:18:05 27 4
gpt4 key购买 nike

我有一个模型 Location,其字段 name 通常包含变音符号 - 例如“Rhône-Alpes”、“Midi-Pyrénées”和“Île-”去法国”。

此模型在我的应用程序中以几种不同的方式使用,特别是对于按名称进行的查询。示例包括:

Location.find_by(name: 'Rhône-Alpes')
Location.find_or_create_by(name: 'Rhône-Alpes', country: 'France')

这些 find 方法的参数因应用程序而异。我的问题是:如何确保每次引用名称字段时都会调用某个 Postgres 函数(在本例中为 unaccent())?这意味着我可以搜索“Rhone”和“Rhône”,并获得相同的结果。

是否最好覆盖 find_byfind_or_create_by 方法?如果是这样,最好的方法是什么?

最佳答案

将逻辑下推到数据库层总是好的,但如果你一直在处理许多不同的项目,你可能需要在未来执行一个不带 unaccenting 的查找,然后在你不能轻易找到时遇到问题调试,因此在执行此操作时必须始终小心。

不要覆盖 find_by 方法,不建议这样做,因为您可能会执行标准的 find_by 并产生无法预料的后果。

您是否考虑过在 find_by 之前清理输入?

>> ActiveSupport::Inflector.transliterate("Rhône-Alpes")
=> "Rhone-Alpes"

关于ruby-on-rails - rails 4 : Always use a Postgres function for a certain model field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666213/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com