【发布时间】: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