2009-05-12 5 views
3

Ich mache einige Ressourcen über eine einfache API verfügbar, die JSON zurückgibt. Ich möchte den Weg zu jeder der Ressourcen angeben, damit der Verbraucher sie nicht konstruieren muss. Beispiel für gewünschte Ausgabe für so etwas wie User.all.to_json:Wie füge ich zusätzliche Daten zu ActiveRecord-Datensätzen hinzu, die zu JSON in Rails serialisiert werden?

users: [ 
    {user: { 
    id: 1, 
    name: 'Zaphod', 
    url: 'http://domain.com/users/1.json' 
    }}, 
    {user: { 
    id: 2, 
    name: 'Baron Munchausen', 
    url: 'http://domain.com/users/2.json' 
    }} 
]; 

Um die URL zu generieren wir die Helfer weiterhin nutzen möchten und nicht die Modelle mit dieser Art von Informationen verschmutzen. Gibt es eine Möglichkeit, dies zu tun? Oder bin ich besser dran, wenn ich das in das Modell lege?

Antwort

0

Haben Sie dies überprüft: http://json.rubyforge.org/?

class Range 
    def to_json(*a) 
    { 
     'json_class' => self.class.name, 
     'data'   => [ first, last, exclude_end? ] 
    }.to_json(*a) 
    end 

    def self.json_create(o) 
    new(*o['data']) 
    end 
end 
4

Wenn Sie ein Modell Methode, die Sie in der Json Serialisierung enthalten mögen, können Sie einfach das eingebaute to_json Gespräch mit dem :methods Parameter verwenden:

class Range 
    def url 
    # generate url 
    ... 
    end 
end 

Range.find(:first).to_json(:methods => :url) 
Verwandte Themen