J'ai un objet dans Ruby appelé Post. Je voudrais convertir un message en json mais je veux aussi inclure le nom de l'utilisateur qui a posté le message. La chose est nom_utilisateur n'est pas présent dans l'objet Post, mais l'ID utilisateur est.To_Json overriding dans Ruby
donc ce que je veux effectivement est quelque chose comme ça
{name:"My Post", body:"My post data", user_name:"jhonny"}
Quand je fais un to_json sur l'objet après je me suit
{name:"My Post", body:"My post data"}
Mais je veux aussi ajouter user_name:"jhonny"
partie aussi à elle. Je sais que je peux faire un hachage et ensuite faire un to_json
sur le hachage, mais je ne veux pas faire le hachage pour toutes les valeurs de poste manuellement car il y a beaucoup d'attributs à publier. Je préfère utiliser une fonction de fusion de hash pour ajouter l'attribut supplémentaire à hash, puis appeler json sur celui-ci.
Existe-t-il un moyen de créer un objet de hachage rapide pour une classe ruby? Toutes les idées seront les bienvenues.
Quelque chose comme
my_post.hash.merge{:user_name => "jhonny"}.to_json
Vive.
Je l'ai trouvé un moyen comme ActiveRecord :: JSON.decode (my_post.to_json) .merge ({: user_name => "Jhonny"}). To_json Cela fonctionne mais c'est un mauvais hack. Je veux un moyen plus propre de bien faire les choses. – Priyank
Je ne pense pas que ce soit un mauvais hack. Vous ne modifiez que post en json, puis revenez à un hachage, puis fusionnez le nom d'utilisateur, puis convertissez le hachage entier en json. Il aurait été un mauvais hack si elle a échoué dans un scénario. – Waseem