2016-08-08 27 views
2

Ich habe Serializer wieWrap-Attribute unter benutzerdefinierte Schlüssel aktiven Modell Serializer

class UserSeriazer < ActiveModel::Serializer 
    attributes :name, :email 
end 

und die json wie unten

{ 
    name: 'james' 
    email: '[email protected]' 
} 

wie kann ich die oben json Artikel wickeln, unter benutzerdefinierte Schlüssel sagen customer

{ 
    customer: 
    { 
     name: 'james' 
     email: '[email protected]' 
    } 

} 

Ich versuche etwas wie Attribut: Name,: E-Mail, Schlüssel:: Kunde, hat aber nicht funktioniert. Danke im Voraus.

Antwort

0

Sie können versuchen, Ihrer Serializer-Datei Root-Schlüssel hinzuzufügen. in UserSerializer, fügen Sie diese

attributes :name, :email, root: 'customer' 

Ich bin mir nicht sicher, wie das funktionieren würde. Sie können mit folgen, wenn dies nicht funktioniert.

Die beste Methode wäre, einen neuen Serializer namens CustomerSerializer zu erstellen. Das würde von UserSerializer erben. Im abgeleiteten Serializer können Sie die erforderlichen Attribute angeben. Der Benutzer UserSerializer sollte für die Verwendung von CustomerSerializer geändert werden.

class CustomerSerializer < UserSerializer 
    attributes :name , :email 
end 

Bitte Kommentar, die funktioniert!