Tengo un hash y, para cada nivel del hash, quiero almacenar su clave y valor. El problema es que un valor puede ser otra matriz de hash. Además, ese hash puede contener pares de valores clave donde el valor es otra vez matriz de hash, etc., etc. Además, no sabré cuán profundamente anidado estará cada hash. Para dar un ejemplo:Iteramos un nivel de hashes profundamente anidado en Ruby
{
:key1 => 'value1',
:key2 => 'value2',
:key3 => {
:key4 => 'value4',
:key5 => 'value5'
},
:key6 => {
:key7 => 'value7',
:key8 => {
:key9 => 'value9'
}
}
}
.. Y así sucesivamente. Lo que quiero hacer es guardar cada clave, par de valores y el id de su principal. Me imagino que esto probablemente se hará recursivamente, no estoy seguro de cómo porque no estoy familiarizado con las funciones recursivas. Yo sé la manera de recorrer los datos normalmente:
myHash.each {|key, value|
...Do something with the key and value ...
}
Y así que supongo la llamada recursiva será algo como esto:
def save_pair (myHash)
myHash.each {|key, value|
if(value.class != Hash) ? Pair.create(key, value) : save_pair(value)
}
end
Esto no se ha probado, y todavía estoy seguro de cómo para incorporar guardar los identificadores principales independientemente.
Sus ajustes funcionan perfectamente. ¡Gracias un montón! – varatis