Se você precisar criar um user_id
, seria razoável supor que você está referenciando uma tabela de usuário. Nesse caso, a migração será:
rails generate migration AddUserRefToProducts user:references
Este comando irá gerar a seguinte migração:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
Depois de executar, rake db:migrate
uma user_id
coluna e um índice serão adicionados à products
tabela.
Caso você precise apenas adicionar um índice a uma coluna existente, por exemplo, name
de uma user
tabela, a seguinte técnica pode ser útil:
rails generate migration AddIndexToUsers name:string:index
irá gerar a seguinte migração:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
Excluir add_column
linha e execute a migração.
No caso descrito, você poderia ter emitido o rails generate migration AddIndexIdToTable index_id:integer:index
comando e, em seguida, excluir a add_column
linha da migração gerada. Mas eu prefiro recomendar desfazer a migração inicial e adicionar referência em vez disso:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references