活动模型序列化器嵌套关联无问题

时间:2016-09-21 11:23:26

标签: ruby-on-rails serialization active-model-serializers

我有以下协会

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。如何添加只允许序列化书籍的条件?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容来装饰您的关联:

has_one :book, serializer: BookSerializer  

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

如果那不是您正在寻找的内容,请告诉我