主动模型序列化器扁平结构

时间:2015-10-11 13:49:48

标签: ruby-on-rails api active-model-serializers rails-api flat

我正在为我的React / Redux应用程序构建我的api服务器,我需要服务器进行一些平坦的响应来管理和减少我的状态。

例如,当我有这个回应时:

[{
  id: 1,
  title: 'Some Article',
  author: {
    id: 1,
    name: 'Dan'
  }
}, {
  id: 2,
  title: 'Other Article',
  author: {
    id: 1,
    name: 'Dan'
  }
}]

我怎样才能看起来像:

{
  result: [1, 2],
  entities: {
    articles: {
      1: {
        id: 1,
        title: 'Some Article',
        author: 1
      },
      2: {
        id: 2,
        title: 'Other Article',
        author: 1
      }
    },
    users: {
      1: {
        id: 1,
        name: 'Dan'
      }
    }
  }
}

最佳功能是每个键是文章/用户ID,所以我可以轻松地从响应中获取它并将其合并到我的前端应用程序中。

1 个答案:

答案 0 :(得分:2)

您可以使用AMS实现此目的,但您必须编写自定义适配器,因为没有任何库存提供这种确切的格式。

JSON API(以及相应的AMS JsonApi适配器)解决了这个问题,但格式与您想要的格式略有不同。