Якщо вам потрібно створити, 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