Class: FService::Result::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/f_service/result/base.rb

Overview

This class is abstract.

Abstract base class for Result::Success and Result::Failure.

Direct Known Subclasses

Failure, Success

Instance Method Summary collapse

Instance Method Details

#on(success:, failure:) ⇒ Object

“Pattern matching”-like method for results. It will run the success path if Result is a Success. Otherwise, it will run the failure path.

Examples:

class UsersController < BaseController
  def update
    User::Update.(user: user).on(
      success: ->(value) { return json_success(value) },
      failure: ->(error) { return json_error(error) }
    )
  end

  private

  def user
    @user ||= User.find_by!(slug: params[:slug])
  end
end

Parameters:

  • success (#call)

    a lambda (or anything that responds to #call) to run on success

  • failure (#call)

    a lambda (or anything that responds to #call) to run on failure



40
41
42
43
44
45
46
# File 'lib/f_service/result/base.rb', line 40

def on(success:, failure:)
  if successful?
    success.call(value)
  else
    failure.call(error)
  end
end