设置默认模型序列化程序

时间:2017-09-07 11:59:37

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

考虑如下定义的Thing模型和序列化程序:

# models/thing.rb
class Thing < ApplicationRecord
end

# serializers/thing_serializer.rb
class ThingSerializer < ActiveModel::Serializer
  attributes :id, :name
end

在控制器中,我想序列化@thing,所以

render json: @thing

按预期返回

{"id":3,"name":"rocket"}

然而,当我尝试更深层次地嵌套响应时:

render json: { thing: @thing }

@thing已序列化,但未使用定义的序列化程序(输出所有字段)。

我的问题是双重的:

  1. 是否有一种干净的动态方式使序列化哈希使用嵌套在其中的对象的“默认”序列化程序而不使用render json: { thing: ThingSerializer.new(@thing) }

  2. 如果是这样,这也可以应用于集合序列化程序,因此对象不必像

  3. 那样包装

    render json: { my_key: ThingSerializer::CollectionSerializer.new(@things) }

0 个答案:

没有答案