ruby-on-rails - 如何让序列化器不包含仅用于特定方法的关联表?

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

我正在学习如何使用 active_model_serializers ( gem )。在组织序列化器中,我有:

has_many :nodes

现在,当我对组织的数据发出 API 请求时,它还会自动发送关联节点的属性。

例如,对组织 Controller 的 show 方法发出 GET 请求,会生成包含组织属性和节点的 JSON。这有效。

这对于 show 方法来说是完美的,但对于对索引方法的 GET 请求,我希望它仅包含组织的属性,而不包含关联节点的属性。这可能吗?

最佳答案

您可以为不同的操作创建不同的序列化器:

class ShallowOrganizationSerializer < ActiveModel::Serializer
    attributes :id, :name # ....
end

class DetailedOrganizationSerializer < ShallowOrganizationSerializer
    has_many :nodes
end

在你的 Controller 中:

class OrganizationController < ApplicationController
    def index
        # ...
        render json: @organizations, each_serializer: ShallowOrganizationSerializer
    end

    def show
        # ...
        render json: @organization, serializer: DetailedOrganizationSerializer
    end
end

关于ruby-on-rails - 如何让序列化器不包含仅用于特定方法的关联表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34842872/

相关文章:

ruby-on-rails - 事件模型序列化程序嵌套关联无问题

javascript - Jquery 插件不适用于 Rails 4

ruby - 库未加载 : libssl. 1.0.0.dylib

ruby - 我如何使用 Sequel::Model 对两个表进行分页?

ruby-on-rails - 如何制作正则表达式来匹配所有互联网域(无论扩展名如何)

ruby-on-rails - Rails - 指定资源可用操作的良好实践?

java - 最大 as3 adobe JSON 字符串长度

java - RESTful 放置 id 和 body

java - 通过路径将带有数组的键添加到json

ruby-on-rails - Rails - 多索引键关联