Supongamos que creé una tabla table
en una aplicación Rails. Algún tiempo después, agrego una columna que se ejecuta:
rails generate migration AddUser_idColumnToTable user_id:string.
Entonces me doy cuenta de que necesito agregar user_id
como índice. Conozco el add_index
método, pero ¿dónde debería llamarse este método? ¿Se supone que debo ejecutar una migración (en caso afirmativo, cuál?), Y luego agregar manualmente este método?
ruby-on-rails
indexing
migration
usuario1611830
fuente
fuente
:table
es el nombre real de la tabla, por lo que, en el caso de unausers
tabla, lo sustituiría:users
por:table
.Si necesita crear una
user_id
, sería razonable suponer que está haciendo referencia a una tabla de usuarios. En cuyo caso la migración será:Este comando generará la siguiente migración:
Después de ejecutar
rake db:migrate
tanto unauser_id
columna como un índice, se agregarán a laproducts
tabla.En caso de que solo necesite agregar un índice a una columna existente, por ejemplo,
name
de unauser
tabla, la siguiente técnica puede ser útil:rails generate migration AddIndexToUsers name:string:index
generará la siguiente migración:Elimina la
add_column
línea y ejecuta la migración.En el caso descrito, podría haber emitido un
rails generate migration AddIndexIdToTable index_id:integer:index
comando y luego eliminar laadd_column
línea de la migración generada. Pero prefiero recomendar deshacer la migración inicial y agregar una referencia en su lugar:fuente
Agregue en la migración generada después de crear la columna lo siguiente (ejemplo)
fuente
Para referencias puede llamar
Si en el futuro necesita agregar un índice general, puede iniciar este
Generar codigo:
fuente
Puede usar esto, solo piense que Job es el nombre del modelo al que está agregando index cader_id :
fuente