ruby: cómo eliminar una migración que tiene una actualización de tabla
Frecuentes
Visto 40 equipos
1
Me hice cargo de una aplicación Ruby que usó algunas migraciones para actualizar los datos en una columna. ¿Hay alguna forma de eliminar esto de la migración sin afectar las reversiones de Ruby en la migración?
gracias maggs
1 Respuestas
0
Si la migración ya se ejecutó y ya no necesita usarla, simplemente puede eliminarla. Como se indicó en los comentarios de su publicación inicial, generalmente no es recomendable eliminar/editar migraciones después de que se hayan ejecutado, pero hay un lugar para hacerlo.
Sería importante comprender qué más está sucediendo en la migración a la que se refiere y la probabilidad de que cause problemas.
Otra posible solución es ajustar la actualización para que sea idempotente, es decir, no importa cuántas veces se ejecute, no debería cambiar el resultado. Esto podría tomar la forma de un if
declaración. en pseudocódigo
class SomeMigration < ActiveRecord::Migration
def up
Score.each do |s|
do_some_stuff if s.value == 1
end
end
def down
Score.each do |s|
revert_some_stuff if s.value == 0
end
end
end
Respondido 14 Feb 14, 05:02
Hola, las migraciones de actualización no deberían doler, ya que los valores ya actualizados deberían permanecer iguales, pero en caso de que alguien cambie un valor, entonces no quiero volver a cambiarlo cuando ejecute la migración. En cuanto a hacer que la actualización sea impotente, ¿cuál sería la mejor manera de hacerlo para actualizar donde se han actualizado todos los registros de una tabla? las respuestas que has dado son valiosas muchas gracias maggs - maggs
Entonces, punto de menor claridad, ¡idempotente es la palabra! Impotente es bastante diferente :P En cuanto a la mejor manera de asegurarse de que las cosas no cambien, debe encontrar la lógica para decirle a Ruby cuándo realizar la acción y cuándo no. A menos que pueda expresar eso programáticamente, no puedo ver cómo se haría. - cordero
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas ruby-on-rails database-migration or haz tu propia pregunta.
Como regla general, no desea editar migraciones después de que ya se hayan ejecutado. Cualquier trabajo de desarrollo futuro debe cargar el esquema en lugar de ejecutar todas las migraciones. ¿Hay alguna razón por la que necesite editar esas migraciones? - Jonathan Bender