如何使用active_model_serializers为嵌套对象选择序列化程序
我正在使用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 resposne中的嵌套对象选择带有active_model_serializers的序列化程序?
一种可能的解决方案可能是编写一个新的序列化程序,它包含我刚才描述的整个对象,并将其用作序列化程序,但我宁愿避免这种情况。
我找到了解决方案。 它不能自动执行,但您可以使用以下命令强制嵌套对象上的序列化程序:
render json: {user_type: "student", student: StudentSerializer.new(stu)}
一个有趣的注意事项是提交了一个pull请求,并且仍然处于active_model_serializers https://github.com/rails-api/active_model_serializers/pull/300中 ,这将自动执行此任务。
- ActiveModel :: Serializers Gem – Versioned API命名空间问题
- Url Helper在ActiveModelSerializer 0.10.0中?
- Rails Active Model Serializer – has_many并访问父记录
- 强制活动模型序列化程序返回关联
- Ember Data属于协会(JSON格式?)
- 如何为活动模型序列化器关系选择所需的属性
- Rails ActiveModelSerializer将两个相同类型模型的列表组合成一个序列化响应,具有不同的名称
- ActiveModel :: Serializer无法正常工作
- Active Model Serializers:nil的未定义方法`url_for’:NilClass