在 UUID 上创建自定义前缀

Create a custom prefix on a UUID

我想知道是否有任何方法可以在 rails 中的 UUID 上创建自定义前缀。我想生成如下内容:

"ret_a44691c8-93e2-11e8-ac1c-1b3aa40a1cae"

我找到了这段代码,我可以将其添加到我的迁移中以创建 UUID:

t.uuid "uuid", default: "uuid_generate_v4()"

但这会生成如下内容:

"a44691c8-93e2-11e8-ac1c-1b3aa40a1cae"

是否可以得到我想要的格式?

如评论中所述,postgres 将 UUID 定义为 (https://www.postgresql.org/docs/9.1/static/datatype-uuid.html)

A sequence of lower-case hexadecimal digits, in several groups separated by 
hyphens, specifically a group of 8 digits followed by three groups of 4 digits 
followed by a group of 12 digits, for a total of 32 digits representing the 128 bits

因此您不能在 UUID 列中添加前缀 ret_。如果您想识别零售商和客户,您也不应该为它创建另一个列。

SqlFiddle 当使用串联的 UUID 时。它会抛出一个错误。

如果你想为你的 UUID 添加前缀,你可以在 postgres 中做这样的事情:

CREATE TABLE IF NOT EXISTS my_table (
  uuid TEXT NOT NULL DEFAULT concat('ret-', uuid_generate_v4())
);

这将生成一个像这样的 uuid:

'ret-a44691c8-93e2-11e8-ac1c-1b3aa40a1cae'