在带有Rails的包含文件中设置自定义序列化程序5

时间:2018-08-09 20:18:04

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

我有这段代码可以从我的模型Vacancy中带来一个空缺,然后根据序列化器VacancyDetailSerializer在json中呈现属性:

  

控制器

vacancy = Vacancy.find(params[:id])    
render json: vacancy, serializer: VacancyDetailSerializer, 
                      include: [:restaurant]

这里的事情是,在include: [:restaurant]中,我想以空缺的方式指定自定义序列化程序,因为目前正在使用RestaurantSerializer的序列化程序,但是我不想获取该文件, 有没有办法使用包含?也许在控制器中,或者在序列化器中?

1 个答案:

答案 0 :(得分:1)

如果您在belongs_to :restaurant中拥有VacancyDetailSerializer关联,则该关联的serializer可以是specified

class VacancyDetailSerializer < ActiveModel::Serializer
  belongs_to :restaurant, serializer: AnotherRestaurantSerializer
end

或者可以通过提供一个块来覆盖它:

class VacancyDetailSerializer < ActiveModel::Serializer
  belongs_to :restaurant do
    AnotherRestaurantSerializer.new(object.restaurant)
  end
end

或者可以实现自定义association serializer lookup