如何在Rails中覆盖PostgreSQL的gen_random_uuid()?

owfi6suc  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(107)

我想在PostgreSQL的gen_random_uuid()生成的uuid前添加一个字符串,作为我的一个模型的uuid(它不是主键)。
想想Stripe的价格和客户ID-"price_xxxx...""cus_xxxx..."
现在我使用gen_random_uuid()如下:

t.uuid "uuid", default: -> { "gen_random_uuid()" }, null: false

有没有可能做一些事情,

t.uuid "uuid", default: -> { "xxx" + "gen_random_uuid()" }, null: false

wljmcqd8

wljmcqd81#

在模型级别解决它可能是一种选择

class MyModel < ApplicationRecord
  attribute :uuid, default: -> { "xxx_#{SecureRandom.uuid}" }
end
dhxwm5r4

dhxwm5r42#

如果你想要一个Postgres特定的解决方案,试试这个:

t.uuid 'uuid', default: -> { "'xxx' || gen_random_uuid()" }, null: false

(Postgres通过以下方式进行字符串连接:||,并将“记号”(撇号)中的文本识别为字符串。)

相关问题