ruby-on-rails – 活动模型序列化器:在ArraySerializer中添加root外的额外信息

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 活动模型序列化器:在ArraySerializer中添加root外的额外信息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
说我有一个模型用户和一个串行器UserSerializer< ActiveModel :: Serializer,以及一个如下所示的控制器:
class UsersController < ApplicationController
  respond_to :json
  def index
    respond_with User.all
  end
end

现在如果我访问/用户我会得到一个如下的JSON响应:

{
  "users": [
    {
      "id": 7,"name": "George"
    },{
      "id": 8,"name": "Dave"
    }
    .
    .
    .
  ]
}

但是,如果我想在JSON响应中添加一些与任何特定用户无关的额外信息呢?例如.:

{
  "time": "2014-01-06 16:52 GMT","url": "http://www.example.com","noOfUsers": 2,"users": [
    {
      "id": 7,"name": "Dave"
    }
    .
    .
    .
  ]
}

这个例子是有创意的,但它是我想要实现的一个很好的近似.这是否可能与活动模型序列化程序? (也许通过子类化ActiveModel :: ArraySerializer?我无法弄清楚).如何添加额外的根元素?

解决方法

您可以将其作为第二个争议通过reply_with
def index
 respond_with User.all,Meta: {time: "2014-01-06 16:52 GMT",url: "http://www.example.com",noOfUsers: 2}
end

在0.9.3版本的初始化器中设置ActiveModel :: Serializer.root = true:

ActiveSupport.on_load(:active_model_serializers) do
  # Disable for all serializers (except ArraySerializer)
  ActiveModel::Serializer.root = true
end

在控制器

render json: @user,Meta: { total: 10 }
原文链接:https://www.f2er.com/ruby/266325.html

猜你在找的Ruby相关文章