3

Ich habe die folgenden VerbändenAktive Modell Serializer verschachtelte Vereinigung nil Ausgabe

class User < ActiveRecord::Base 
    has_one :book 
end 

class Book < ActiveRecord::Base 
    has_many :pages 
end 

Und meine Serializer wie folgt aussehen:

user_serializer.rb

class UserSerializer < ActiveModel::Serializer 
    ... 
    has_one :book, serializer: BookSerializer 
end 

book_serializer.rb

class BookSerializer < ActiveModel::Serializer 
    ... 
    has_many :pages 
end 

Wenn ich nun versuche, ein Benutzerobjekt zu serialisieren, das kein Buch enthält, wird der Fehler undefined method pages for nil class ausgegeben. Wie kann ich eine Bedingung hinzufügen, die das Serialisierungsbuch nur erlaubt, wenn es nicht null ist?

Antwort

0

können Sie Ihre Verbindung mit so etwas wie dekorieren:

has_one :book, serializer: BookSerializer 

def book 
    if object.book 
    BookSerializer.new(object.book)  
    end 
end 

, dass es mich lasst uns wissen, ob das ist nicht das, was Sie suchen

Verwandte Themen