如何通过rails迁移创建新表,并为其添加唯一索引?
在文档中我发现如何在创建表后为表添加索引,但是如何在同一个迁移文件中同时创建表并添加唯一索引?
答案 0 :(得分:56)
这是完整的过程:
生成迁移(rails generate migration CreateFoos bar:string
)
修改您的迁移,使其如下所示:
class CreateFoos < ActiveRecord::Migration
def change
create_table :foos do |t|
t.string :bar, :null => false
t.index :bar, unique: true
end
end
end
运行rake db:migrate
答案 1 :(得分:12)
更紧凑的方式:
class CreateFoobars < ActiveRecord::Migration
def change
create_table :foobars do |t|
t.string :name, index: {unique: true}
end
end
end
答案 2 :(得分:9)
生成迁移rails generate migration CreateBoards name:string description:string
在迁移文件中,添加索引,如下所示:
class CreateBoards < ActiveRecord::Migration
def change
create_table :boards do |t|
t.string :name
t.string :description
t.timestamps
end
add_index :boards, :name, unique: true
end
end
答案 3 :(得分:5)
您可以使用生成器创建表和索引,而无需更改迁移文件
获取唯一索引
rails generate model CreateFoos bar:string:uniq
对于非唯一索引
rails generate model CreateFoos bar:string:index
答案 4 :(得分:0)
在Rails 5中,您可以提供索引选项以及列定义。
aws autoscaling complete-lifecycle-action --lifecycle-hook-name $HOOK --auto-scaling-group-name $ASG --lifecycle-action-result ABANDON --instance-id $ID