-1
votes

Existe-t-il un moyen de ne transformer que des clés dans des rails à l'aide de la méthode Transform_Keys?

J'ai un hasch qui ressemble à ceci:

hash_name.deep_transform_keys{|k| {:adr=>'adr_ltm', :revenue => 'revenue_ltm'}[k] if k == 'adr'||'revenue'}


0 commentaires

3 Réponses :


0
votes

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 xxx pré>

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


0 commentaires

1
votes

Y a-t-il une raison spécifique que vous ne pouvez pas simplement boucler? XXX


1 commentaires

Le hachage peut être assez grand et imbriqué de sorte que la boucle par semblait inefficace et laid



1
votes

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"}


1 commentaires

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.