class ModelApi::BaseController::Utils
Public Class Methods
object_destroy(obj, opts = {})
click to toggle source
# File lib/model-api/base_controller.rb, line 640 def object_destroy(obj, opts = {}) klass = ModelApi::Utils.find_class(obj) object_id = obj.send(opts[:id_attribute] || :id) obj.instance_variable_set(:@readonly, false) if obj.instance_variable_get(:@readonly) if (deleted_col = klass.columns_hash['deleted']).present? case deleted_col.type when :boolean obj.update_attribute(:deleted, true) return true when :integer, :decimal obj.update_attribute(:deleted, 1) return true else obj.destroy end else obj.destroy end false rescue Exception => e Rails.logger.warn "Error destroying #{klass.name} \"#{object_id}\": \"#{e.message}\")." false end
process_object_destroy(obj, operation, opts)
click to toggle source
# File lib/model-api/base_controller.rb, line 617 def process_object_destroy(obj, operation, opts) soft_delete = obj.errors.present? ? false : object_destroy(obj, opts) if obj.errors.blank? && (soft_delete || obj.destroyed?) response_status = :ok object_errors = [] else object_errors = ModelApi::Utils.extract_error_msgs(obj, opts) if object_errors.present? response_status = :bad_request else response_status = :internal_server_error object_errors << { error: 'Unspecified error', message: "Unspecified error processing #{operation}: " \ 'Please contact customer service for further assistance.' } end end [response_status, object_errors] end
process_updated_model_save(obj, operation, opts = {})
click to toggle source
# File lib/model-api/base_controller.rb, line 592 def process_updated_model_save(obj, operation, opts = {}) opts = opts.dup opts[:operation] = operation successful = ModelApi::Utils.save_obj(obj, opts.merge(model_metadata: opts[:api_model_metadata])) if successful suggested_response_status = :ok object_errors = [] else suggested_response_status = :bad_request attr_metadata = opts.delete(:api_attr_metadata) || ModelApi::Utils.filtered_attrs(obj, operation, opts) object_errors = ModelApi::Utils.extract_error_msgs(obj, opts.merge(api_attr_metadata: attr_metadata)) unless object_errors.present? object_errors << { error: 'Unspecified error', message: "Unspecified error processing #{operation}: " \ 'Please contact customer service for further assistance.' } end end [suggested_response_status, object_errors] end