考虑如下定义的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
已序列化,但未使用定义的序列化程序(输出所有字段)。
我的问题是双重的:
是否有一种干净的动态方式使序列化哈希使用嵌套在其中的对象的“默认”序列化程序而不使用render json: { thing: ThingSerializer.new(@thing) }
?
如果是这样,这也可以应用于集合序列化程序,因此对象不必像
render json: { my_key: ThingSerializer::CollectionSerializer.new(@things) }