J'ai un hasch qui ressemble à ceci:
hash_name.deep_transform_keys{|k| {:adr=>'adr_ltm', :revenue => 'revenue_ltm'}[k] if k == 'adr'||'revenue'}
3 Réponses :
Vous pouvez patch de singe la méthode privée dans la classe HASH ou ré-implémente votre propre, c'est l'idée cette méthode est utilisée par Deep_Transform_Keys de cette manière: p> def deep_transform_keys(&block)
_deep_transform_keys_in_object(self, &block)
end
Y a-t-il une raison spécifique que vous ne pouvez pas simplement boucler?
Le hachage peut être assez grand et imbriqué de sorte que la boucle par semblait inefficace et laid
Il existe des gemmes sérialisées / désérialisantes qui vous aident dans ces situations. Ils permettent à la fois de rendre JSON à vos modèles et d'analyser JSON pour mettre à jour vos objets Ruby. son soo beaucoup flexible pour maintenir le code à long terme.
# deserialize song = Song.new SongRepresenter.new(song).from_json('{"id":1, "title":"Fallout"}') song.id #=> 1 song.title #=> "Fallout" # serialize SongRepresenter.new(song).to_json #=> {"id":1, title":"Fallout"}
Merci, cela peut vraiment m'aider beaucoup. Je vais regarder les deux pour voir si je peux les mettre en œuvre pour ce dont j'ai besoin. Je posterai des mises à jour une fois que j'ai fini de vérifier.