23

我知道我可以触摸迁移并添加

add_index :table_name, :column_name, :unique => true

但是正确的 rails 迁移命令是如何生成这个的呢?

rails g migration add_index_to_column_name :column_name, :unique => true

那正确吗?

在我的特殊示例中,我有一张客户表

  t.integer :customerID
  t.string :surname
  t.string :first_name
  t.string :phone

我想将 customerID 设置为唯一的。试过了

rails g migration AddIndexToCustomers :customerID, :unique => true 

但是,如果我在此之后查看我的迁移文件,它看起来不正确:

def change
    add_column :customers, :, :customerID,
    add_column :customers, :, :unique
    add_column :customers, :=, :string
  end

有什么想法或建议吗?

4

1 回答 1

46

从 Rails 3.2 开始,您可以使用:

 rails g migration add_index_to_table_name column_name:uniq

来自http://guides.rubyonrails.org/3_2_release_notes.html的示例

 rails g scaffold Post title:string:index author:uniq price:decimal{7,2}

我很抱歉如果您不通过,默认类型将是字符串。您可以自己传递类型。

column_name:type:uniq

因此,您的示例应如下所示:

rails g migration add_index_to_customers customerID:integer:uniq
于 2013-05-08T17:46:57.667 回答