加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 活动模型序列化器:在ArraySerializer中添加ro

发布时间:2020-12-16 22:13:16 所属栏目:百科 来源:网络整理
导读:说我有一个模型用户和一个串行器UserSerializer ActiveModel :: Serializer,以及一个如下所示的控制器: class UsersController ApplicationController respond_to :json def index respond_with User.all endend 现在如果我访问/用户我会得到一个如下的JSON
说我有一个模型用户和一个串行器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 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读