如何从rails generate
命令生成模型,指定uuid
作为主键的列类型?
我的目标是发出如下命令:
rails g model widget id{uuid}
生成类似
的迁移create_table :widgets, id: :uuid do |t|
t.timestamps null: false
end
我意识到我可以在生成迁移后添加id: :uuid
,但我觉得必须有一些懒惰的方法来执行此操作。
答案 0 :(得分:3)
这是一个老帖子,但我也想这样做。
首先 - 启用uuid:创建新的迁移文件rails g migration enable_uuid_extension
并编辑此文件,如下所示:
class EnableUuidExtension < ActiveRecord::Migration
def change
enable_extension 'uuid-ossp'
end
end
第二次 - 在/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
对于您下次的所有迁移都会这样做。
答案 1 :(得分:0)
答案 2 :(得分:0)
首先运行它
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
答案 3 :(得分:0)
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