=> {:name=>"John", :physical => {:age=>25, :weight=>150}}
3 Réponses :
Essayez ceci:
x = x.merge(x.delete(:data))
Vous ne voulez pas dire : données code>, pas : physique code>?
Ou fusion! Code> pour éviter l'extra copier.
J'irais après cela de cette façon:
Basé sur la réponse de @ micha% C3% ABL-WitRant et parce que j'en avais besoin sur une matrice imbriquée, voici la fonction de la tâche de manière récursive:
def levelUpAttribute(attr,myHash,parent = nil)
if myHash.is_a?(Hash)
#level up matching keys
myHash = myHash.merge(myHash.delete(attr) || {})
#recursion
myHash.each do |key, value|
myHash[key] = levelUpAttribute(attr,value,key)
end
end
myHash
end
x = levelUpAttribute(:data,x)