5

我正在使用 rails 4.0.0 并且正在寻找一种方法来序列化包含具有这些预定义对象的序列化程序的预定义对象的自定义对象。

示例:我有一个带有序列化程序 StudentSerializer 的模型 Student。我想按如下方式呈现 JSON 对象:

{ 
  user_type: "student"
  student: {
    id: 1
    email: fake@email.com
  }
}

我为 Student 编写的序列化程序只序列化 email 和 id 属性。但是,当我打电话时:

render json: {user_type="student", student: stu}

我得到所有属性的学生的全部对象。是否可以为 JSON 响应中的嵌套对象选择带有 active_model_serializers 的序列化程序?

一个可能的解决方案可能是编写一个新的序列化程序,它包含我刚刚描述的整个对象并将其用作序列化程序,但如果可能的话,我宁愿避免这种情况。

4

1 回答 1

6

我找到了解决方案。它不能自动执行,但您可以使用以下命令强制嵌套对象上的序列化程序:

render json: {user_type: "student", student: StudentSerializer.new(stu)}

一个有趣的注意事项是,提交了一个拉取请求,并且对于 active_model_serializers https://github.com/rails-api/active_model_serializers/pull/300仍处于不确定状态,它将自动执行此任务。

于 2014-01-22T00:21:07.693 回答