2009-03-25 7 views
5

J'ai mon sérialisation JSON fonctionne bienAjout d'attributs supplémentaires à une sérialisation ActiveRecord?

render :json => "#{current_object.serialize(:json, :attributes => [:id, :name])} 

Mais je veux aussi ajouter d'autres données au format JSON avant qu'il ne soit mis au client. Principalement le auth_token.

Googled autour comme fou, mais je ne peux pas trouver quelle option serialize prendra pour me permettre d'ajouter/fusionner mes autres données dans le JSON.

Hopting trouver quelque chose comme ça ...

current_object.serialize(:json, :attriubtes => [:id, name], :magic_option => {:form_authenticity_token => "#{form_authenticity_token}"}) 

Répondre

0

hacké dans et passer ...

current_object.serialize(:json, :attributes => [:id, :name]).gsub(/\}$/, ", \"form_authenticity_token\": \"#{form_authenticity_token}\"}") 
4

Vous voulez les clés: méthodes, qui fonctionne comme: attributs, mais inclura les résultats des méthodes données. Dans votre cas:

current_object.to_json(
    :attributes => [:id, :name], 
    :methods => [:form_authenticity_token] 
) 
+0

Désolé je suppose que j'aurais pu expliquer un peu mieux les choses. Les données supplémentaires que je cherche à ajouter (form_aithenticity_token) ne sont pas une fonction du modèle ActiveRecord. Notez également que #to_json ignore le noeud racine. {nom du modèle: {...}} –

1

Pour ce que ça vaut, dans un Rails récents Je piraté ensemble ce que vous voulez comme ceci:

sr = ActiveRecord::Serialization::Serializer.new(your_object, some_serialization_options).serializable_record 
sr['extra'] = my_extra_calculation(some_parameters) 
format.json { render :json => sr } 

Où your_object est ce que vous voulez sérialiser, some_serialization_options sont votre niveau: include,: only, etc, et my_extra_calculation est ce que vous voulez faire pour définir la valeur.

Jimmy

Questions connexes