© 2023 Feiniao, Inc. All rights reserved.

如何在Rails+PostgreSQL中用UUID替代ID - 怎么在Rails+PostgreSQL中用UUID替代ID?

PostgreSQL Rails
UUID相比整数ID具有明显优势,如全局唯一性、安全性和无序性。然而,其缺点也不容忽视,如可读性、存储空间、索引性能和复杂性。在使用UUID作为主键时,需根据具体应用场景和需求进行权衡和选择。
配置

1,新建初始化文件,这将告诉Rails使用UUID作为主键类型。

# config/initializers/generators.rb
Rails.application.config.generators do |g|
    g.orm :active_record, primary_key_type: :uuid
end

2,接下来,为Postgres数据库生成模型/迁移。

rails generate migration enable_uuid --no-test-framework

3,在Postgres数据库中启用pgcrypto扩展。

# db/migrate/2020xxx_enable_uuid.rb
class EnableUuid < ActiveRecord::Migration[6.0]
    def change
        enable_extension 'pgcrypto'
    end
end

测试

1,生成模型。

rails g model user name:string email:string --no-test-framework

2,映射模型。

rails db:create && rails db:migrate

3,运行rails c进入控制台测试。

a = User.create(name: "aa", email: "aa@qq.com")
a.id
=> "a07758d9-54d1-47fd-8556-b127bac1de4d" # 此结果说明UUID配置成功