Ruby on rails 如何在Fast Json Api或活动模型序列化程序中为STI模型提供两个不同的序列化程序
我有一个Ruby on rails 如何在Fast Json Api或活动模型序列化程序中为STI模型提供两个不同的序列化程序,ruby-on-rails,active-model-serializers,fastjsonapi,Ruby On Rails,Active Model Serializers,Fastjsonapi,我有一个工作流模型和两种类型的工作流 正常工作流程 特殊工作流程 有一个项目模型,该模型与使用的工作流模型相关,它有许多/属于关联 现在,为了获取项目的所有工作流,我们有了一个WorkflowsController 我想返回一组工作流(其中包括两条记录,一条用于正常\u工作流,另一条用于特殊\u工作流),并满足以下要求: NormalWorkflow必须仅显示Workflow所有字段的子集以及一些元信息 SpecialWorkflow必须用一些元数据显示工作流字段的不同子集 实现这一点的一种方法
工作流
模型和两种类型的工作流
项目
模型,该模型与使用的工作流模型相关,它有许多/属于关联
现在,为了获取项目的所有工作流,我们有了一个WorkflowsController
我想返回一组工作流(其中包括两条记录,一条用于正常\u工作流
,另一条用于特殊\u工作流
),并满足以下要求:
NormalWorkflow
必须仅显示Workflow
所有字段的子集以及一些元信息
SpecialWorkflow
必须用一些元数据显示工作流
字段的不同子集
实现这一点的一种方法是为每个属性和关系检查工作流的类型。我认为这种方法不太好,因为当工作流类型增加时,序列化程序中的条件也会增加
class Project
has_many :workflows
has_many :normal_workflows
has_many :special_workflows
end
class Workflow < ApplicationRecord
belongs_to :project
end
class NormalWorkflow < Workflow
# STI model
belongs_to :project
end
class SpecialWorkflow < Workflow
# STI model
belongs_to :project
end
class WorkflowsController < ApplicationController
# Using fast-json-api gem
def index
@workflows = WorkflowSerializer.new(@project.workflows).serialize_json
end
end
类项目
有很多:工作流
有很多:正常的工作流程
有很多:特殊的工作流程
结束
类工作流<应用程序记录
属于:项目
结束
类NormalWorkflow
因此,我正在寻找一个更干净的解决方案,这将有助于保持代码干燥,也有点可扩展的其他类型。(它可能使用一些装饰器或任何其他对象)对于AMS,您可以从