【问题标题】:Set Active Model serializer adapter per method为每个方法设置 Active Model 序列化器适配器
【发布时间】:2016-11-20 12:50:40
【问题描述】:

我正在尝试在 rails 5 中构建一个仅限 api 的应用程序。我正在使用活动模型序列化程序 (AMS)。 在我的GET /users (UsersController#index) 端点上,我希望根 json 在用户的 json 数组之前有一个“用户”关键字。

如果我用ActiveModelSerializers.config.adapter = :json 值设置了一个初始化器,那么我就有了想要的行为。

但是,在 GET /users/1 上,简单的用户 json 位于密钥 user 下。我想摆脱这个键(在这种情况下)并简单地回答用户 json 作为根 json。

问题是:如何在特定端点/响应/方法上定义 AMS 适配器?这可能吗?

【问题讨论】:

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


    【解决方案1】:

    我应该读过手册:$

    要覆盖“root”键,您必须在调用render 方法时提供root: 参数。如果您在初始化程序上使用:json 适配器,它将是这样的:

    render json: @user, root: "admin" 这将生成一个像这样的 json:

    { “行政”: { “身份证”:123, “电子邮件”:“电子邮件@example.com” } }

    如果需要,您还可以在root: 之后提供另一个键来设置适配器,如下所示:adapter: :json

    因此,:attributes 适配器没有根密钥。为了删除根密钥,您可以执行以下操作: render json: @user, root: "admin", adapter: :attributes

    官方文档是herehere

    【讨论】:

    • 感谢您的关注 :) 我将它们更新为特定的发布版本,而不是 master 分支。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多