Por esas cosas de la vida me encontré todo el día de hoy migrando datos viejos de un sistema hecho en PHP a uno hecho en Rails. Las cosas venían bastante simples definiendo modelos de ActiveRecord para las tablas de la base de datos vieja y reinsertando con modelos apuntando a las tablas nuevas. Pero … siempre hay un pero.
Resulta que el hermoso sistema anterior para evitar tener muchas tablas (o vaya a saber por qué) tenía en una parte un tabla donde cada field era un gran TEXT que contenía un array de PHP serializado.
class UserTextField user = UserTextField.find(3) $> user.folders # => 'a:2:{i:0;s:4:"bkps";i:1;s:6:"listas";'
Justo cuando estaba por ponerme a parsear texto me encontré con php-serialize que permite serializar y deserializar estos string en cómodos tipos nativos de Ruby.
El código final queda entonces algo como :
class UserTextField user = UserTextField.find(3) $> user.folders # => ["bkps", "listas"]
Y la migración de datos pudo continuar sin problemas :).
Si hubiera estado en tu situación, me la hubiera jugado a hacer un script en PHP que deserialice el campo y lo transforme en algo que rails pueda leer más fácil (ya que no conocía php-serialize, ni me imaginaba que existiera). ¿Qué hizo que no tomaras ese camino?
Me gustaMe gusta
No tomé ese camino porque simplemente no quiero programar más en PHP, salvo que sea super-estrictamente necesario 😀
Me gustaMe gusta