说我有一个模型用户和一个串行器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 }