如何使用 uuid 主键生成迁移
How to generate migration with uuid primary key
如何从 rails generate
命令生成模型,指定 uuid
作为主键的列类型?
我的目标是发出如下命令:
rails g model widget id{uuid}
生成类似
的迁移
create_table :widgets, id: :uuid do |t|
t.timestamps null: false
end
我知道我可以在生成迁移后添加 id: :uuid
,但我觉得一定有一些懒惰的方法可以做到这一点。
你可以这样做:
rails g model widget uuid:primary_key
我把这个link存到Pocket上了,很有用。
先运行吧
rails g migration CreateWidget uuid:primary_key
然后去迁移文件添加primary_key: "uuid", force: true
例如
class CreateWidget < ActiveRecord::Migration
def change
create_table :widgets, id: false, force: true do |t|
t.primary_key :uuid
end
end
end
这是一个旧的 post 但我也想这样做。
首先 - 启用 uuid:创建一个新的迁移文件 rails g migration enable_uuid_extension
并按如下方式编辑此文件:
class EnableUuidExtension < ActiveRecord::Migration
def change
enable_extension 'uuid-ossp'
end
end
Second - 在 /config/application.rb 中,添加这 3 行:
config.generators do |g|
g.orm :active_record, primary_key_type: :uuid
end
然后 ...就是这样!如你所愿 rails g model widget
将生成 :
create_table :widgets, id: :uuid do |t|
t.timestamps null: false
end
并将对您的所有下一次迁移执行相同的操作。
As of Rails 5.0,您现在可以使用以下语法选择加入单个迁移:
rails generate migration CreateWidget widget --primary-key-type=uuid
这会导致以下迁移(使用 Rails 6.0 生成,但功能保持不变):
class CreateWidget < ActiveRecord::Migration[6.0]
def change
create_table :widgets, id: :uuid do |t|
end
end
end
如何从 rails generate
命令生成模型,指定 uuid
作为主键的列类型?
我的目标是发出如下命令:
rails g model widget id{uuid}
生成类似
的迁移create_table :widgets, id: :uuid do |t|
t.timestamps null: false
end
我知道我可以在生成迁移后添加 id: :uuid
,但我觉得一定有一些懒惰的方法可以做到这一点。
你可以这样做:
rails g model widget uuid:primary_key
我把这个link存到Pocket上了,很有用。
先运行吧
rails g migration CreateWidget uuid:primary_key
然后去迁移文件添加primary_key: "uuid", force: true
例如
class CreateWidget < ActiveRecord::Migration
def change
create_table :widgets, id: false, force: true do |t|
t.primary_key :uuid
end
end
end
这是一个旧的 post 但我也想这样做。
首先 - 启用 uuid:创建一个新的迁移文件 rails g migration enable_uuid_extension
并按如下方式编辑此文件:
class EnableUuidExtension < ActiveRecord::Migration
def change
enable_extension 'uuid-ossp'
end
end
Second - 在 /config/application.rb 中,添加这 3 行:
config.generators do |g|
g.orm :active_record, primary_key_type: :uuid
end
然后 ...就是这样!如你所愿 rails g model widget
将生成 :
create_table :widgets, id: :uuid do |t|
t.timestamps null: false
end
并将对您的所有下一次迁移执行相同的操作。
As of Rails 5.0,您现在可以使用以下语法选择加入单个迁移:
rails generate migration CreateWidget widget --primary-key-type=uuid
这会导致以下迁移(使用 Rails 6.0 生成,但功能保持不变):
class CreateWidget < ActiveRecord::Migration[6.0]
def change
create_table :widgets, id: :uuid do |t|
end
end
end