ActiveModelSerializer в рельсах - PullRequest
       29

ActiveModelSerializer в рельсах

0 голосов
/ 04 марта 2019

Я использую 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_many связь с training_module), нов некоторых API я не хочу добавлять данные курсов.

Кто-нибудь может объяснить, как я могу это сделать?

1 Ответ

0 голосов
/ 04 марта 2019

Просто создайте еще один сериализатор без has_many

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

и используйте его в контроллере

render json: @record, serializer: SimpleTrainingModuleSerializer
...