Migrando datos desde PHP a Rails

January 22nd, 2010 | by | programación

Jan
22

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 < ActiveRecord::Base
  set_table_name "usertextfield"
  set_primary_key "userid"
 
  def folders
    field3
  end
end
 
$> 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 < ActiveRecord::Base
  set_table_name "usertextfield"
  set_primary_key "userid"
 
  def folders
    PHP.unserialize(field3)
  end
end
 
$> user = UserTextField.find(3)
$> user.folders # => ["bkps", "listas"]

Y la migración de datos pudo continuar sin problemas :) .

Authored by

Just Me. If you have something to say, please leave a comment somewhere :)

  • Delicious
  • Facebook
  • Digg
  • Reddit
  • StumbleUpon
  • Twitter

2 Responses to “Migrando datos desde PHP a Rails”

Show / Hide Comments
  1. Aureliano says:

    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?

    • Gazer says:

      No tomé ese camino porque simplemente no quiero programar más en PHP, salvo que sea super-estrictamente necesario :D

Leave a Comment