Если вам нужно создать, 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