在UUID上创建自定义前缀

时间:2018-07-30 10:46:39

标签: ruby-on-rails uuid rails-migrations

我想知道是否有任何方法可以在Rails的UUID上创建自定义前缀。我想生成类似的东西:

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

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

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

但这会生成类似以下内容的

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

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

2 个答案:

答案 0 :(得分:3)

如评论中所述,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时)。它将引发错误。

答案 1 :(得分:0)

如果要为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'