2014-01-22 6 views
5

auswählen Ich bin Rails 4.0.0 und bin auf der Suche nach einer Möglichkeit, ein benutzerdefiniertes Objekt, das vordefinierte Objekte mit diesen vordefinierten Objekt Serialisierer enthält, zu serialisieren.Wie Serializer für verschachtelte Objekte mit active_model_serializers

Beispiel: Ich habe ein Modell Student mit einem Serializer StudentSerializer. Ich möchte ein JSON-Objekt wie folgt rendern:

Mein Serializer, der für Student geschrieben wird, serialisiert nur die E-mail- und die ID-Attribute. Aber wenn ich anrufe:

render json: {user_type="student", student: stu} 

Ich bekomme das vollständige Objekt des Schülers zurück mit allen Attributen. Ist es möglich, einen Serializer mit Active_Model_serializers für verschachtelte Objekte in einer JSON-Resposne auszuwählen?

Eine mögliche Lösung könnte sein, einen neuen Serialisierer zu schreiben, der das ganze Objekt, das ich gerade beschrieben habe, umfasst und diesen als Serializer verwendet, aber ich würde dies lieber vermeiden, wenn es möglich ist.

+0

könnten Sie 'Student.where (: id => 1) .select (: id,: email)' verwenden – devanand

Antwort

6

Ich fand eine Lösung. Es kann nicht automatisch ausgeführt werden, aber Sie einen Serializer auf einem verschachteltes Objekt erzwingen können durch die Verwendung:

render json: {user_type: "student", student: StudentSerializer.new(stu)} 

Eine interessante Anmerkung ist, dass eine Pull-Anforderung vorgelegt wurde und bleibt in der Schwebe für active_model_serializers https://github.com/rails-api/active_model_serializers/pull/300, die diese Aufgabe automatisch Vorform würde.