class Cuprum::Rails::Actions::Update
Action
to assign and update a resource instance by primary key.
Private Instance Methods
assign_resource()
click to toggle source
# File lib/cuprum/rails/actions/update.rb, line 13 def assign_resource primary_key = step { resource_id } attributes = step { resource_params } entity = step do collection.find_one.call(primary_key: primary_key) end step do collection.assign_one.call(attributes: attributes, entity: entity) end end
failed_validation?(result)
click to toggle source
# File lib/cuprum/rails/actions/update.rb, line 24 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/update.rb, line 29 def process(request:) super entity, result = update_resource return result unless failed_validation?(result) Cuprum::Result.new( error: result.error, status: :failure, value: { singular_resource_name => entity } ) end
update_resource()
click to toggle source
# File lib/cuprum/rails/actions/update.rb, line 43 def update_resource entity = nil result = steps do entity = assign_resource step { collection.validate_one.call(entity: entity) } step { collection.update_one.call(entity: entity) } { singular_resource_name => entity } end [entity, result] end