【问题标题】:Patch ActiveRecord/postgres_ext to return upper case UUID修补 ActiveRecord/postgres_ext 以返回大写 UUID
【发布时间】:2012-10-31 14:50:28
【问题描述】:

我将 postgres_ext 与 Rails/ActiveRecord 一起使用,以便能够将 UUID 存储为 PostreSQL UUID 数据类型。但在我的应用程序中,我正在比较 uuid,并希望从模型返回的 UUID 为大写而不是小写。

如何修补 ActiveRecord/postgres_ext 以始终​​返回 UUID 的大写字符串表示形式?

【问题讨论】:

    标签: ruby-on-rails ruby postgresql activerecord postgres-ext


    【解决方案1】:

    我有一个关于你为什么要这样做的问题,但是......

    修补 ActiveRecord 可能不是最好的方法。如果您希望您的模型将 UUID 的大写版本返回给应用程序的其余部分,您可以在模型代码本身中执行此操作。这样,您就可以将数据库层的细节从应用程序的其余部分中抽象出来。

    您可以通过覆盖访问器代码来做到这一点。可能看起来像:

    def uuid
      read_attribute(:uuid).upcase
    end
    

    【讨论】:

    • 原因是客户端正在发送字符串格式的 uuid 列表,我想检查某个 UUID 是否在发送的列表中。如果所有 UUID 都是大写的,我可以使用包含?在列表中,这使得比较数据库中的 UUID 和客户端提供的 UUID 更容易。
    • 作为 postgres_ext gem 的维护者,这是这样做的。 postgres_ext 不会更改 UUID 列的任何类型转换,因此它只是返回一个字符串
    猜你喜欢
    • 2019-01-03
    • 2022-07-15
    • 2019-01-09
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多