我正在学习如何使用active_model_serializers
(gem)。在组织序列化程序中,我有:
has_many :nodes
现在,当我为组织的数据发出API请求时,它会自动发送关联节点的属性。
例如,对组织控制器的show方法的GET请求生成包含组织和节点属性的JSON。这很有效。
这对于show方法是完美的,但是对于索引方法的GET请求,我希望仅包含组织的属性而不包括关联节点。这可能吗?
答案 0 :(得分:2)
您可以为不同的操作创建不同的序列化程序:
class ShallowOrganizationSerializer < ActiveModel::Serializer
attributes :id, :name # ....
end
class DetailedOrganizationSerializer < ShallowOrganizationSerializer
has_many :nodes
end
在你的控制器中:
class OrganizationController < ApplicationController
def index
# ...
render json: @organizations, each_serializer: ShallowOrganizationSerializer
end
def show
# ...
render json: @organization, serializer: DetailedOrganizationSerializer
end
end