2017-05-18 3 views
1

Ich habe einen Artikel. Es gehört einem Benutzer. Ich habe eine ItemSerializer und eine UserSerializer in app/Serializer:aktiver Modell-Serializer zeigt nicht alle Attribute des zugehörigen Modells

class ItemSerializer < ActiveModel::Serializer 
    attributes :id, :photo 

    belongs_to :user 
end 

class UserSerializer < ActiveModel::Serializer 
    attributes :id, :email, :authentication_token 
end 

Diese Beziehungen Modell der Beziehungen in app/model

Wenn ich eine ActiverRecord :: Relation von Elementen wie json in meinem Controller zurück:

def index 
    respond_to do |format| 
     @items = Item.where(id: params[:item_ids) 
     format.html 
     format.json { render json: @items, status: 200} 
    end 
    end 

Es sollte auch die Benutzerattribute, einschließlich E-Mail und authentication_token, zurückgeben. Aber es gibt nur die Benutzer-ID zurück:

... "relationships":{"user":{"data":{"id":"1","type":"users"}}} ... 

Was mache ich falsch?

Antwort

1

Versuchen Sie,

render json: @items, include: "**", status: 200 

In dem Controller. AMS kann bei der Rückgabe verwandter Objektattribute knifflig sein, daher müssen Sie manchmal explizit darauf hinweisen.

+0

Ich weiß nicht, ob das funktioniert oder nicht, aber überprüfe meine Lösung. Das Problem ist, dass ich json_api anstelle von json für den Adapter benutzte. – Donato

1

Ich habe das Problem herausgefunden. Ich benutze active_model_serializers Version 0.10.0. Es gab mir die Attribute der Verbände sowie

ActiveModel::Serializer.config.adapter = :json 

, wie aus der Konsole dargestellt: In config/environments/initialzers/active_model_serializer.rb hatte ich die folgende Konfiguration:

ActiveModel::Serializer.config.adapter = :json_api 

Als ich es geändert

ActiveModelSerializers::SerializableResource.new(Item.where(id: params[:item_ids), adapter: :json).to_json 
Verwandte Themen