diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7ee83c03cb4092390f330e8b4c6ef9946fb54e36..9cd65d75f03330c095cef67357fe3a1004b29d76 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -26,6 +26,12 @@ class ApplicationController < ActionController::API # tracking user in papertrail before_action :set_paper_trail_whodunnit + rescue_from Exception do |exception| + logger.fatal exception + logger.fatal exception.backtrace.first(5).join("\n") + render status: :internal_server_error + end + # check if client application is allowed to consumes the API. before_action :allow_client_application, if: -> { Feature.active?(:allow_client_application) } diff --git a/app/controllers/v1/learning_objects_controller.rb b/app/controllers/v1/learning_objects_controller.rb index bfed4f10705d4dac7e5f2ec4342f434a8a0a086a..f7c0ed1b990d70e5d3da70b38c9f2b4c2f94d2b3 100644 --- a/app/controllers/v1/learning_objects_controller.rb +++ b/app/controllers/v1/learning_objects_controller.rb @@ -74,10 +74,17 @@ 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? + lo_params = learning_object_params + if !lo_params[:object_type_id].blank? && lo_params[:object_type_id] != @learning_object.object_type_id && lo_params[:link].blank? change_object_type_id = true end - if @learning_object.update(learning_object_params) + + if lo_params[:thumbnail] == "null" + @learning_object.thumbnail.clear + lo_params.delete(:thumbnail) + end + + if @learning_object.update(lo_params) update_learning_object_associations(@learning_object, change_object_type_id) publisher = LearningObjectPublisher.new(DspaceService.create_client) publisher.update_dspace(@learning_object)