在整个 rails 应用中设置默认主键类型?

Set default primary key type across entire rails app?

我将使用 uuid 作为新 rails 应用程序中 一些 表的主键类型。

我看到偶尔的限制,例如(至少开箱即用)ActiveStorage 只能处理 具有 bigintuuid primary key 的模型上的附件s(不是两者的混合)。

出于这个原因,我认为为每个主键使用 uuid 是一种更简洁的方法。

是否有新的 rails 应用程序的全局设置可以设置为生成的任何模型都将自动使用 uuid?

是,设置

config.generators do |g|
  g.orm :active_record, primary_key_type: :uuid
end

config/application.rb.

如果遇到问题,请在 postgres 中启用 pgcypto 扩展:

class EnableUuidExtension < ActiveRecord::Migration[6.1]
  def change
    enable_extension 'pgcrypto'
  end
end

注意:这必须是第一次迁移到 运行!