2009-03-25 9 views
5

Ich habe meine Json Serialisierung feineHinzufügen weiterer Attribute zu einer ActiveRecord-Serialisierung?

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

arbeiten Aber ich möchte auch weitere Daten an die json hinzuzufügen, bevor es zurück an den Client gesetzt wird. Hauptsächlich das auth_token.

Wie verrückt herum gegoogelt, aber ich kann nicht finden, welche Option serialisieren wird, um mir zu erlauben, meine anderen Daten an den JSON anzuhängen/zusammenzuführen.

Hopting zu so etwas wie dieses zu finden ...

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

Antwort

0

es Hacked in und Bewegen auf ...

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

Sie wollen die: Methoden Schlüssel, die wie funktioniert: Attribute, aber wird die Ergebnisse der Methoden enthalten. In Ihrem Fall:

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

Entschuldigung, ich könnte die Dinge etwas besser erklären. Die zusätzlichen Daten, die ich anhängen möchte (form_aithenticity_token), sind keine Funktion des ActiveRecord-Modells. Beachten Sie auch, dass das Aufrufen von #to_json den Root-Knoten auslässt. {Modellname: {...}} –

1

Für das, was es wert ist, in einer aktuellen Rails ich zusammen gehackt, was Sie wollen wie folgt aus:

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

Wo your_object ist, was Sie serialisieren möchten, some_serialization_options sind Ihre Standard: include,: only, etc Parameter und my_extra_calculation ist was auch immer Sie tun wollen, um den Wert zu setzen.

Jimmy

Verwandte Themen