2011-12-22 18 views
11

Quería obtener un objeto en producción y hacer una réplica exacta (copiar sobre su contenido) a otro objeto del mismo tipo. He intentado hacer esto en 3 maneras de consola de rubí, que ninguno de ellos funcionó:Copia profunda de matrices en Ruby

  1. Digamos que usted tiene la tt como el primer objeto que desea copiar una y tt2 como el objeto de réplica. El primer enfoque Probé es la clonación de la matriz

    tt2.patients = tt.urls.patients 
    tt2.doctors = tt.segments.doctors 
    tt2.hospitals = tt.pixels.hospitals 
    
  2. segundo enfoque que pretende es duplicar la matriz que en realidad es la misma que la clonación de la matriz:

    tt2.patients = tt.patients.dup 
    tt2.doctors = tt.doctors.dup 
    tt2.hospitals = tt.hospitals.dup 
    
  3. tercer enfoque Probé se marhsalling.

    tt2.patients = Marshal.load(Marshal.dump(tt.patients)) 
    tt2.doctors = Marshal.load(Marshal.dump(tt.doctors)) 
    tt2.hospitals = Marshal.load(Marshal.dump(tt.hospitals)) 
    

Nada de lo anterior funciona para una copia completa de una matriz a otra. Después de probar cada enfoque individualmente anterior, todos los contenidos del primer objeto (tt) quedan anulados (los pacientes, los médicos y los hospitales se han ido). ¿Tiene alguna otra idea sobre cómo copiar el contenido de un objeto a otro? Gracias.

+1

Simplemente está configurando sus variables en el primer ejemplo. Pruebe tt2.patients = tt.patiens.clone en su lugar. – three

Respuesta

15

fácil!

@new_tt   = tt2.clone 
@new_tt.patients = tt2.patients.dup 
@new_tt.doctors = tt2.doctors.dup 
@new_tt.hospitals = tt2.hospitals.dup 
@new_tt.save 
+0

Esto funciona genial. new_tt tiene toda la información que necesito ahora. Sin embargo, todos los contenidos de tt2 (pacientes, médicos, hospitales) se han ido después de hacer lo que me dijo anteriormente. ¿Cómo se guardan los contenidos de tt2? –

+0

¡Woops! Tuve un error sintáctico allí. Actualicé el código de arriba. Pruébalo. – Trip

+0

¿Qué es diferente entre esto y cuál es su segundo enfoque? –

Cuestiones relacionadas