web-dev-qa-db-ja.com

Ruby on Rails on generate migration)の列にインデックス:uniqueを追加する

移行に触れて追加できることを知っています

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

アイデアや提案はありますか?

18
Denny Mueller

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}

updごめんなさい。渡さない場合のデフォルトのタイプは文字列です。自分でタイプを渡すことができます。

column_name:type:uniq

したがって、例は次のようになります。

Rails g migration add_index_to_customers customerID:integer:uniq
34
ck3g