我正在使用rails 4.0.0,并且正在寻找一种使用这些预定义对象的序列化程序序列化包含预定义对象的自定义对象的方法。
示例:我有一个带有序列化程序StudentSerializer的学生模型。我想呈现一个JSON对象,如下所示:
{
user_type: "student"
student: {
id: 1
email: fake@email.com
}
}
我为学生编写的序列化器仅序列化电子邮件和id属性。但是当我打电话时:
render json: {user_type="student", student: stu}
我得到了具有所有属性的学生的完整对象。是否可以为JSON代码仓库中的嵌套对象选择带有active_model_serializers的序列化程序?
可能的解决方案是编写一个新的序列化器,该序列化器包含我刚刚描述的整个对象,并将其用作序列化器,但我宁愿避免这种情况。
最佳答案
我找到了解决方案。它不能自动执行,但是可以使用以下方法在嵌套对象上强制执行序列化程序:
render json: {user_type: "student", student: StudentSerializer.new(stu)}
一个有趣的注释是,提交了一个拉取请求,但对于active_model_serializers https://github.com/rails-api/active_model_serializers/pull/300而言,请求仍然处于闲置状态,它将自动执行此任务。