我正在编写一个迁移脚本来创建一个表,该表的主键列名为 guid
并且是一个 VARCHAR(25)
。问题是我觉得我必须加倍努力才能一步到位地实现目标。
如果我运行:
create_table(:global_feeds, :primary_key => 'guid') do |t|
t.string :guid, :limit => 25
t.text :title
t.text :subtitle
...
t.timestamps
end
我得到一个表,其中有一个名为 guid
的主键,没有名为 id
的列(这是我想要的)。但是,问题是 guid
列是一个启用了自动递增的 INT(11)
。所以我必须运行一个额外的命令:
change_column :global_feeds, :guid, :string, :limit => 25
基本上必须运行两个 SQL 命令才能获得我认为应该可以在一个命令中实现的功能,这似乎有点令人费解。
关于如何优化它有什么建议吗?
最佳答案
在 Rails 4 中你可以做到;
create_table :global_feeds, id: false do |t|
t.string :guid, primary_key: true
...
end
关于mysql - Rails 迁移创建表主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769725/