如何使用uuid主键生成迁移

Boo*_*age 2 uuid ruby-on-rails

如何从rails generate命令生成模型,指定uuid主键的列类型?

我的目标是发出如下命令:

rails g model widget id{uuid}
Run Code Online (Sandbox Code Playgroud)

生成类似的迁移

create_table :widgets, id: :uuid do |t|
  t.timestamps null: false
end
Run Code Online (Sandbox Code Playgroud)

我意识到我可以id: :uuid在生成迁移后添加,但我觉得必须有一些懒惰的方法来做到这一点。

dev*_*voh 5

这是一篇旧文章,但我也想做同样的事情。

首先- 启用 uuid :创建一个新的迁移文件rails g migration enable_uuid_extension并编辑该文件,如下所示:

class EnableUuidExtension < ActiveRecord::Migration
  def change
    enable_extension 'uuid-ossp'
  end
end
Run Code Online (Sandbox Code Playgroud)

第二- 在 /config/application.rb 中,添加以下 3 行:

config.generators do |g|
  g.orm :active_record, primary_key_type: :uuid
end
Run Code Online (Sandbox Code Playgroud)

然后……就是这样!如您所愿rails g model widget将生成:

create_table :widgets, id: :uuid do |t|
  t.timestamps null: false
end
Run Code Online (Sandbox Code Playgroud)

并且将为您的所有下一次迁移执行相同的操作。

来源