在 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'
我想知道是否有任何方法可以在 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'