使用JSON API时,Active Model Serializer删除关系成员

时间:2015-10-28 23:21:53

标签: active-model-serializers json-api

我正在使用最新的AMS v0.10.0.rc3和JSON API适配器。

到目前为止工作得很好,并且正在添加一些我想要改变的有用约定。

例如,假设我有一个Post序列化器和一个Comment序列化器,如下所示:

class Post < ActiveModel::Serializer
  attributes :id, :title
  has_many :comments
end

class Comment < ActiveModel::Serializer
  attributes :id, :comment
  belongs_to :post
end

然后,如果我请求/posts/1,例如我得到以下

{
  "data": {
    "id": "1",
    "type": "posts",
    "attributes": {
      "title": "My awesome title",
    },
    "relationships": {
      "comments": {
        "data": [
          {
            "id": "1",
            "type": "comments"
          },
          {
            "id": "2",
            "type": "comments"
          }
        ]
      }
    }
  }
}

注意relationships成员的显示方式以及spec的成员是如何标记为 MAY 的可选成员。 这是一个很好的约定,我需要覆盖一些时间。

所以我的问题是:

  • 我如何删除序列化程序或控制器级别的relationship成员?

(如果我错过了一些细节,请发表评论,我会更新问题。)

1 个答案:

答案 0 :(得分:0)

目前,您最好的选择是定义两个序列化程序,一个具有关联,一个没有,并在您的渲染调用中指定要使用的(render json: posts, each_serializer: PostWithoutAssociationsSerializer)。

目前正在讨论向关联和属性添加include_if选项,如果它被合并,您可以利用这些选项。