Suponha que eu criei uma tabela table
em um aplicativo Rails. Algum tempo depois, adiciono uma coluna executando:
rails generate migration AddUser_idColumnToTable user_id:string.
Então percebo que preciso adicionar user_id
como um índice. Eu sei sobre o add_index
método, mas onde deve ser chamado esse método? Devo executar uma migração (em caso afirmativo, qual?) E, em seguida, adicionar manualmente esse método?
ruby-on-rails
indexing
migration
user1611830
fonte
fonte
:table
é o nome tabela real, assim, no caso de umausers
tabela, você iria substituir:users
por:table
.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á:Este comando irá gerar a seguinte migração:
Depois de executar,
rake db:migrate
umauser_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 umauser
tabela, a seguinte técnica pode ser útil:rails generate migration AddIndexToUsers name:string:index
irá gerar a seguinte migração: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 aadd_column
linha da migração gerada. Mas eu prefiro recomendar desfazer a migração inicial e adicionar referência em vez disso:fonte
Adicione a migração gerada após criar a coluna a seguir (exemplo)
fonte
Para referências, você pode ligar
Se no futuro você precisar adicionar um índice geral, você pode lançar este
Gerar código:
fonte
Você pode usar isso, basta pensar que Job é o nome do modelo ao qual você está adicionando o índice cader_id :
fonte