【问题标题】:Active Model Serializer and multiple meta values活动模型序列化器和多个元值
【发布时间】:2013-08-29 00:17:27
【问题描述】:

我正在查看 Active Model Serializer 的 README 并查看以下示例:

render json: @posts, serializer: CustomArraySerializer, meta: {total: 10}, meta_key: 'meta_object'

...

{
  "meta_object": { "total": 10 },
  "posts": [
    { "title": "Post 1", "body": "Hello!" },
    { "title": "Post 2", "body": "Goodbye!" }
  ]
}

但我希望能够输出:

{
  "meta_object": { "total": 10 },
   "sort":[2,1],
  "posts": [
    { "title": "Post 1", "body": "Hello!" },
    { "title": "Post 2", "body": "Goodbye!" }
  ]
}

我猜我需要两个元对象。这可能吗?我该怎么做?

【问题讨论】:

    标签: ruby-on-rails-3 active-model-serializers


    【解决方案1】:

    正常的解决方案是将“排序”键本身嵌套在“元”键下(“元”是非模型响应信息的全部位置)。所以你会使用:

    render json: @posts, serializer: CustomArraySerializer, meta: { total: 10, sort: [2, 1] }, meta_key: 'meta_object'
    ...
    {
      "meta_object": {
        "total": 10,
        "sort": [2, 1]
      },
      "posts": [
        { "title": "Post 1", "body": "Hello!" },
        { "title": "Post 2", "body": "Goodbye!" }
      ]
    }
    

    如果您的要求绝对需要“排序”键出现在根目录,您可以手动完成:

    response_json = CustomArraySerializer.new(@posts).as_json.merge { sort: [2, 1] }
    render json: response_json, meta: { total: 10 }, meta_key: 'meta_object'
    ...
    {
      "meta_object": {
        "total": 10
      },
      "sort": [2, 1],
      "posts": [
        { "title": "Post 1", "body": "Hello!" },
        { "title": "Post 2", "body": "Goodbye!" }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多