2009-03-25 3 views
5

Ho il mio serializzazione JSON lavorando beneAggiunta di ulteriori attributi a una serializzazione ActiveRecord?

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

ma voglio anche aggiungere ulteriori dati al JSON prima che venga impostato al client. Principalmente il auth_token.

Cerca su Google come un matto ma non riesco a trovare quale opzione prenderà il serial per consentire di aggiungere/unire i miei altri dati nel JSON.

Hopting di trovare qualcosa di simile ...

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

risposta

0

hackerato in e andare avanti ...

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

si desidera che la chiave: metodi, che funziona come: gli attributi, ma includerà i risultati dei metodi dati. Nel tuo caso:

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

Scusa Suppongo che avrei potuto spiegare le cose un po 'meglio. I dati extra che sto cercando di aggiungere (form_aithenticity_token) non sono una funzione del modello ActiveRecord. Si noti inoltre che la chiamata a #to_json lascia fuori il nodo radice. {nome del modello: {...}} –

1

Per quel che vale, in un recente Rails ho messo insieme quello che si vuole in questo modo:

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

Dove your_object è ciò che si desidera serializzare, some_serialization_options sono il vostro standard: include,: solo, i parametri etc e my_extra_calculation è quello che vuoi fare per impostare il valore.

Jimmy

Problemi correlati