如何在Active Record / Rails 4迁移中创建具有唯一索引的新表

时间:2014-02-07 19:06:26

标签: ruby-on-rails activerecord ruby-on-rails-4

如何通过rails迁移创建新表,并为其添加唯一索引?

在文档中我发现如何在创建表后为表添加索引,但是如何在同一个迁移文件中同时创建表并添加唯一索引?

5 个答案:

答案 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