class Cuprum::Rails::Actions::Create
Action
to build and insert a resource instance.
Private Instance Methods
create_resource()
click to toggle source
# File lib/cuprum/rails/actions/create.rb, line 13 def create_resource entity = nil result = steps do attributes = step { resource_params } entity = step { collection.build_one.call(attributes: attributes) } step { collection.validate_one.call(entity: entity) } step { collection.insert_one.call(entity: entity) } { singular_resource_name => entity } end [entity, result] end
failed_validation?(result)
click to toggle source
# File lib/cuprum/rails/actions/create.rb, line 30 def failed_validation?(result) result.failure? && result.error.is_a?(Cuprum::Collections::Errors::FailedValidation) end
process(request:)
click to toggle source
Calls superclass method
Cuprum::Rails::Action#process
# File lib/cuprum/rails/actions/create.rb, line 35 def process(request:) super entity, result = create_resource return result unless failed_validation?(result) Cuprum::Result.new( error: result.error, status: :failure, value: { singular_resource_name => entity } ) end