class NiftyServices::BaseCreateService
Public Class Methods
new(options = {})
click to toggle source
Calls superclass method
# File lib/nifty_services/base_create_service.rb, line 4 def initialize(options = {}) super(nil, options) end
Public Instance Methods
execute()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 8 def execute execute_action do with_before_and_after_callbacks(:create) do if can_execute_action? @record = with_before_and_after_callbacks(:build_record) { build_record } if try_to_save_record after_execute_success_response else errors = create_error_response(@record) after_error_response(errors) end end end end end
Private Instance Methods
after_error_response(errors)
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 52 def after_error_response(errors) unprocessable_entity_error(errors) if @errors.empty? end
after_execute_success_response()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 56 def after_execute_success_response success_created_response end
build_from_record_type(attributes)
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 73 def build_from_record_type(attributes) scope = record_type if !build_record_scope.nil? && build_record_scope.respond_to?(:new) scope = build_record_scope end scope.new(attributes) end
build_record()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 60 def build_record unless record_type.nil? # initialize @temp_record to be used in after_build_record callback return @temp_record = build_from_record_type(record_allowed_attributes) end @temp_record = record_type.public_send(:new, record_allowed_attributes) end
build_record_scope()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 69 def build_record_scope nil end
can_create_record?()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 87 def can_create_record? not_implemented_exception(__method__) end
can_execute?()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 83 def can_execute? return true end
can_execute_action?()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 91 def can_execute_action? unless can_create_record? return (valid? ? forbidden_error!(cant_create_error_key) : false) end return true end
cant_create_error_key()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 99 def cant_create_error_key "#{record_error_key}.cant_create" end
create_error_response(record)
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 48 def create_error_response(record) record.errors end
on_save_record_error(error)
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 44 def on_save_record_error(error) return unprocessable_entity_error!(error) end
save_record()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 26 def save_record save_method = NiftyServices.configuration.save_record_method return save_method.call(@record) if save_method.respond_to?(:call) @record.public_send(save_method) end
try_to_save_record()
click to toggle source
# File lib/nifty_services/base_create_service.rb, line 34 def try_to_save_record begin save_record rescue => e on_save_record_error(e) ensure return @record.valid? end end