Ruby on rails 在UUID上创建自定义前缀

Ruby on rails 在UUID上创建自定义前缀,ruby-on-rails,uuid,rails-migrations,Ruby On Rails,Uuid,Rails Migrations,我想知道是否有任何方法可以在rails中的UUID上创建自定义前缀。我想生成如下内容: "ret_a44691c8-93e2-11e8-ac1c-1b3aa40a1cae" "a44691c8-93e2-11e8-ac1c-1b3aa40a1cae" 我找到了以下代码,可以将其添加到迁移中以创建UUID: t.uuid "uuid", default: "uuid_generate_v4()" 但这会产生如下结果: "ret_a44691c8-93e2-11e8-ac1c-1b3aa40a

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

"ret_a44691c8-93e2-11e8-ac1c-1b3aa40a1cae"
"a44691c8-93e2-11e8-ac1c-1b3aa40a1cae"
我找到了以下代码,可以将其添加到迁移中以创建UUID:

t.uuid "uuid", default: "uuid_generate_v4()"
但这会产生如下结果:

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

有可能获得我想要的格式吗?

如评论中所述,postgres将UUID定义为

所以不能在UUID列中为ret_u加前缀。如果您想识别零售商和客户,也不应该为其创建另一列


使用连接的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'

您使用的是哪一个数据库?我使用的是Postgres DB版本10postgres将UUID定义为小写十六进制数字序列,分为若干组,用连字符分隔,特别是一组8位,后面是三组4位,后面是一组12位,对于表示128位的总共32位=>为什么还要在ret_u之前加上前缀?@Leo这会在Postgres中引发错误=>为了索引的目的,更好的方法是使用convert_uto将列存储为BYTEA,。