Если вам нужно создать, user_idтогда будет разумным предположить, что вы ссылаетесь на пользовательскую таблицу. В этом случае миграция должна быть:
rails generate migration AddUserRefToProducts user:references
Эта команда сгенерирует следующую миграцию:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
После запуска rake db:migrateодновременно user_idстолбца и индекс будет добавлен к productsтаблице.
Если вам просто нужно добавить индекс к существующему столбцу, например, nameк userтаблице, может оказаться полезным следующий прием:
rails generate migration AddIndexToUsers name:string:index сгенерирует следующую миграцию:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
Удалите add_columnстроку и запустите миграцию.
В описанном случае вы могли ввести rails generate migration AddIndexIdToTable index_id:integer:indexкоманду, а затем удалить add_columnстроку из сгенерированной миграции. Но я бы рекомендовал отменить первоначальную миграцию и вместо этого добавить ссылку:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references