Rails中的ActiveModelSerializers

时间:2019-03-04 07:37:46

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

我正在我的应用程序中使用active_model_serializers(用于API):

class TrainingModuleSerializer < ActiveModel::Serializer
  attributes :id, :name, :description, :status, :module_type
  has_many :courses, serializer: CourseSerializer
end

class CourseSerializer < ActiveModel::Serializer
  attributes :id, :name
end

def training_module_list
  @training_modules = TrainingModule.where(tenant_id: 1)
  render :json => @training_modules
end

在某些API中,我需要添加课程数据(与has_manytraining_module关联),但是在某些API中,我不想添加课程数据。

有人可以解释我该怎么做吗?

1 个答案:

答案 0 :(得分:3)

只需再创建一个没有has_many的序列化器

class SimpleTrainingModuleSerializer < ActiveModel::Serializer
  attributes :id, :name, :description, :status, :module_type
end

并在控制器中使用它

render json: @record, serializer: SimpleTrainingModuleSerializer