ruby - 使用 rails 5 在包含文件中设置自定义序列化程序
问题描述
我有这段代码从我的模型 Vacancy 中带来一个空缺,然后根据序列化程序 VacancyDetailSerializer 在 json 中呈现属性:
控制器
vacancy = Vacancy.find(params[:id])
render json: vacancy, serializer: VacancyDetailSerializer,
include: [:restaurant]
这里的事情是,在include: [:restaurant]
我想指定一个自定义序列化程序时,就像我对空缺所做的那样,因为现在正在使用 RestaurantSerializer 的序列化程序,但我不想使用那个文件,有没有办法做到这一点包括?也许在控制器中,或者在序列化程序中?
解决方案
如果您在 中具有belongs_to :restaurant
关联VacancyDetailSerializer
,则serializer
可以为此关联指定:
class VacancyDetailSerializer < ActiveModel::Serializer
belongs_to :restaurant, serializer: AnotherRestaurantSerializer
end
或者可以通过提供一个块来覆盖它:
class VacancyDetailSerializer < ActiveModel::Serializer
belongs_to :restaurant do
AnotherRestaurantSerializer.new(object.restaurant)
end
end
或者可以实现自定义关联序列化程序查找。
推荐阅读
- asp.net - 我可以将会话值传递给变量,然后将其保存到另一个 guid 类型变量吗
- latex - sty 颜色缺失问题 Beamer Poster JHR
- go - 格式字符串中没有占位符
- c# - Xamarin 选项卡式页面选项卡没有填满空间?
- vb.net - 如何以编程方式向我的 Windows 窗体添加一个按钮,单击该按钮将打开一个宏?
- jpa-2.1 - JPQL CreateQuery 与 SYSDate 比较
- javascript - 对数据库的 AJAX 请求
- java - 序列化中基于自定义注释的忽略字段
- hadoop - 如何通过hdfs MapReduce直接计算hdfs上文件的magnetlink?
- c# - Ground Plane Stage 旋转子对象