Tengo una tabla en una aplicación Rails con cientos de miles de registros y solo tienen una created_at
marca de tiempo. Estoy agregando la capacidad de editar estos registros, por lo que quiero agregar una updated_at
marca de tiempo a la tabla. En mi migración para agregar la columna, quiero actualizar todas las filas para que la nueva updated_at
coincida con la anterior created_at
, ya que ese es el valor predeterminado para las filas recién creadas en Rails. Podría hacer una find(:all)
iteración a través de los registros, pero eso llevaría horas debido al tamaño de la tabla. Lo que realmente quiero hacer es:
UPDATE table_name SET updated_at = created_at;
¿Hay una manera mejor de hacerlo en una migración de Rails usando ActiveRecord en lugar de ejecutar SQL sin formato?
Yourmodel.update_all 'update_at=created_at'
es mejor, no? También funciona en un telescopio.up
seguida dedown
" . Así que considérelodef change
solo en su lugar.change
método aún no existía, pero en este caso todavía prefiero usar explícitoup
ydown
ser más explícito (si desea controlar lo quedown
debe hacer).