2017-01-31 3 views
0

die folgenden zwei Entitäten vor: Beiträge, AutorenWie Verbände zur Gruppe Attribute in einer Sammlung (Active Modell Serializer)

class PostSerializer < ActiveModel::Serializer 
    attributes :id, :title, author_id 
    belongs_to :author 
end 

Class AuthorSerializer < ActiveModel::Serializer 
    attributes :id, :name 
end 

der Verwendung von ‚JSON‘ Adapter, für den Index Aktion von Posts erhalten wir die Antwort wie unten:

{ 
    "posts":[ 
    { 
     "id":1, 
     "title":"Hic consectetur et delectus", 
     "author_id": 1, 
     "author":{"id":1,"name":"Author-A"} 
    }, 
    { 
     "id":2, 
     "title":"Hic consectetur et delectus", 
     "author_id": 2, 
     "author":{"id":2,"name":"Author-B"} 
    }, 
    { 
     "id":3, 
     "title":"Hic consectetur et delectus", 
     "author_id": 1, 
     "author":{"id":1,"name":"Author-A"} 
    } 
    ] 
} 

Ist es möglich, die Autoren Daten außerhalb der Post-Daten für Sideloading gruppieren? (wie unten gezeigt)

+0

Es ist durchaus möglich, aber dann würden Sie verlieren die Json-Adapter und Modifizieren des Hash zu unserem gewünschten Format in der serializable_hash (...) Verfahren zur Verlängerung des relation..whats der Punkt es zu tun..es ist so gut wie zwei ActiveRecord Objekte einzeln zu haben. – Abhinay

+0

Es gibt mehrere Komponenten im System, die die Daten im oben genannten Format erwarten. Dies war in AMS 0.8.x mit der Embed: IDs möglich, konnte aber nicht das Äquivalent dafür finden in AMS 0.10.x –

+0

0.8 kann man sich einen frühen Entwurf von Jsonapi vorstellen. Einbetten wurde eingeschlossen. – BF4

Antwort

0

Zur Umgehung des Problems haben wir einen benutzerdefinierten Adapter

class CustomAdapter < ActiveModelSerializers::Adapter::Json 
    def serializable_hash(options = nil) 
    result_hash = super(options) 
    ... code to modify hash format ... 
    result_hash 
    end 
end 
0

Scheint so, als ob Sie die in JSONAPI enthaltenen Beziehungen nachahmen wollen. Also, w json adapter, Post hat ein Attribut, um die Dinge einfach zu halten, author_id, und dann rendern Sie die Post-Sammlung getrennt von Autoren und generieren die Antwort, oder Sie rendert sie gemischt und reduzieren sie. Du kannst vielleicht nur als [Posts, Autoren] rendern!

Verwandte Themen