28 votes

Ajouter l'index :unique à une colonne dans ruby on rails via la migration generate

Je sais que je peux toucher une migration et ajouter

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

Mais quelle est la bonne commande de migration de rails pour générer ceci ?

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

C'est bien ça ?

Dans mon exemple particulier, j'ai une table clients

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

et je veux que l'identifiant du client soit unique. J'ai essayé

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

Mais si je regarde mon fichier de migration après cela, il n'a pas l'air bien, voyez ceci :

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

Une idée ou une suggestion ?

51voto

ck3g Points 3153

À partir de Rails 3.2, vous pouvez utiliser :

 rails g migration add_index_to_table_name column_name:uniq

exemple de http://guides.rubyonrails.org/3_2_release_notes.html

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

upd Je suis désolé. Le type par défaut si vous ne le passez pas serait string. Vous pouvez passer le type par vous-même.

column_name:type:uniq

Votre exemple devrait donc ressembler à ceci :

rails g migration add_index_to_customers customerID:integer:uniq

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X