我有这段代码可以从我的模型Vacancy中带来一个空缺,然后根据序列化器VacancyDetailSerializer在json中呈现属性:
控制器
vacancy = Vacancy.find(params[:id])
render json: vacancy, serializer: VacancyDetailSerializer,
include: [:restaurant]
这里的事情是,在include: [:restaurant]
中,我想以空缺的方式指定自定义序列化程序,因为目前正在使用RestaurantSerializer的序列化程序,但是我不想获取该文件, 有没有办法使用包含?也许在控制器中,或者在序列化器中?
答案 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。