Si vous avez besoin de créer un, user_idil serait raisonnable de supposer que vous référencez une table utilisateur. Dans ce cas, la migration sera:
rails generate migration AddUserRefToProducts user:references
Cette commande générera la migration suivante:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
Après avoir exécuté à la rake db:migratefois une user_idcolonne et un index seront ajoutés à la productstable.
Dans le cas où vous avez juste besoin d'ajouter un index à une colonne existante, par exemple named'une usertable, la technique suivante peut être utile:
rails generate migration AddIndexToUsers name:string:index générera la migration suivante:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
Supprimez la add_columnligne et exécutez la migration.
Dans le cas décrit, vous auriez pu lancer une rails generate migration AddIndexIdToTable index_id:integer:indexcommande puis supprimer la add_columnligne de la migration générée. Mais je recommande plutôt d'annuler la migration initiale et d'ajouter une référence à la place:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references