3

Я следующие ассоциацииАктивная модель сериализатору проблема вложенной объединение ноль

class User < ActiveRecord::Base 
    has_one :book 
end 

class Book < ActiveRecord::Base 
    has_many :pages 
end 

И мои сериализаторов выглядят как:

user_serializer.rb

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

book_serializer.rb

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

Теперь, когда я пытаюсь сериализовать пользовательский объект, который не имеет книги, он вызывает ошибку undefined method pages for nil class. Как добавить условие, позволяющее сериализовать книгу только в том случае, если она не равна нулю?

ответ

0

вы можете украсить вашу ассоциацию с чем-то вроде:

has_one :book, serializer: BookSerializer 

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

Вот это дайте мне знать, если это не то, что вы ищете