首页 > 解决方案 > Rails:将 UUID 主键添加到已经使用 UUID 作为主键的数据库中的表

问题描述

在 Rails 5.2 中,我有一个 has_and_belongs_to_many 连接表,我将其转换为 has_many :through 关系,因此现在需要表上的主键。

我已经在我的 Postgres 数据库中使用 UUID 作为主键,因此我需要添加一个 UUID 主键列,但无法获得正确的语法。

我试过了...

add_column :products_uw_questions, :uuid, :primary_key

但这只是创建了一个基于整数的列。

我也试过...

add_column :products_uw_questions, :id, :primary_key

认为已经存在的 UUID 设置会处理它,但没有运气。

如果我的数据库已经在使用 UUID 主键,那么正确的语法是什么?

标签: ruby-on-railspostgresqlactiverecorduuid

解决方案


一直在尝试,直到这有效...

def change
  add_column :products_questions, :id, :uuid, primary_key: true, default: -> { "gen_random_uuid()" }
end

推荐阅读