【问题标题】:Why is serializer not emitting JSON API spec?为什么序列化程序不发出 JSON API 规范?
【发布时间】:2016-11-18 03:42:05
【问题描述】:

首先这是 Rails 4.2 中的 active_model_serializers 版本 0.10.2。

我有一个带有两个序列化器的 Article 模型,用于不同的场景,但对于这个测试,它们完全相同,只是类名不同,即 ArticleSerializer 和 ArticleSimpleSerializer。我不知道如何让 ArticleSimpleSerializer 在控制器之外发出 JSON API 格式的 JSON。

这是我的带有全局序列化器配置的初始化器。

ActiveModelSerializers.config.adapter = :json_api
ActiveModelSerializers.config.jsonapi_resource_type = :singular
ActiveModelSerializers.config.key_transform = :unaltered

什么有效:

在控制器中渲染: 它们都输出带有数据、类型和属性根键的 JSON API 格式。第一个自动找到并使用ArticleSerializer

render status: :ok, json: @article
render status: :ok, json: @article, serializer: ArticleSimpleSerializer

使用默认查找在控制器外部渲染: 这将找到 ArticleSerializer,输出将包含数据、类型和属性根键。

ActiveModelSerializers::SerializableResource.new(article).to_json

什么不起作用:

使用 ArticleSimpleSerializer 在控制器外部渲染: 这将包含数据、类型或属性根键。 JSON 基本上是我在 attributes 键下所期望的。

ArticleSimpleSerializer.new(article).to_json

如何让 ArticleSimpleSerializer 在控制器之外使用 JSON API 格式?

【问题讨论】:

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


    【解决方案1】:

    您可以通过 SerializableResource 指定要使用的序列化程序(以及其他选项)。

    这让我得到了我想要的。

    ActiveModelSerializers::SerializableResource.new(article, serializer: ArticleSimpleSerializer).as_json
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-13
      • 2017-05-25
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 2013-02-01
      相关资源
      最近更新 更多