diff --git a/app/controllers/v1/learning_objects_controller.rb b/app/controllers/v1/learning_objects_controller.rb index 2815773e2accb1338ea36b1db9fea30d046677db..81da21258866d5d74d2f41b1ad6b89eed6b39bce 100644 --- a/app/controllers/v1/learning_objects_controller.rb +++ b/app/controllers/v1/learning_objects_controller.rb @@ -49,8 +49,11 @@ class V1::LearningObjectsController < ApplicationController # PATCH/PUT /learning_objects/1 # PATCH/PUT /learning_objects/1.json def update + if !learning_object_params[:object_type_id].blank? && learning_object_params[:object_type_id] != @learning_object.object_type_id && learning_object_params[:link].blank? + change_object_type_id = true + end if @learning_object.update(learning_object_params) - learning_object_associations(@learning_object) + learning_object_associations(@learning_object, change_object_type_id) publisher = LearningObjectPublisher.new(DspaceService.create_client) publisher.update_dspace(@learning_object) @@ -108,7 +111,7 @@ class V1::LearningObjectsController < ApplicationController params[:learning_object].permit(subjects: [], educational_stages: [], tags: [:name]) end - def learning_object_associations(learning_object) + def learning_object_associations(learning_object, change_object_type_id) if extra_params[:tags] == [] current_user.untag(learning_object, with: @learning_object.tags.map { |t| t['name'] }) elsif !extra_params[:tags].nil? @@ -116,6 +119,10 @@ class V1::LearningObjectsController < ApplicationController end learning_object.add_subjects(ids: extra_params[:subjects]) unless extra_params[:subjects].nil? learning_object.add_educational_stages(ids: extra_params[:educational_stages]) unless extra_params[:educational_stages].nil? + + if change_object_type_id + learning_object.link = nil + end end def authorize!