Class: ActiveInteractor::Result

Inherits:
Object
  • Object
show all
Extended by:
ActiveModel::Naming
Defined in:
lib/active_interactor/result.rb

Constant Summary collapse

STATUS =
{
  success: 0,
  failed_at_input: 1,
  failed_at_runtime: 2,
  failed_at_output: 3
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status:, data: {}) ⇒ Result

Returns a new instance of Result.



53
54
55
56
57
# File 'lib/active_interactor/result.rb', line 53

def initialize(status:, data: {})
  @status = status
  @data = data
  @errors = ActiveModel::Errors.new(self)
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



14
15
16
# File 'lib/active_interactor/result.rb', line 14

def data
  @data
end

#errorsObject (readonly)

Returns the value of attribute errors.



14
15
16
# File 'lib/active_interactor/result.rb', line 14

def errors
  @errors
end

Class Method Details

.failure(data: {}, errors: {}, status: STATUS[:failed_at_runtime]) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/active_interactor/result.rb', line 21

def failure(data: {}, errors: {}, status: STATUS[:failed_at_runtime])
  result = new(status: status, data: data)
  parse_errors(errors).each_pair do |attribute, messages|
    Array.wrap(messages).each { |message| result.errors.add(attribute, message) }
  end
  result
end

.human_attribute_name(attribute, _options = {}) ⇒ Object



29
30
31
# File 'lib/active_interactor/result.rb', line 29

def human_attribute_name(attribute, _options = {})
  attribute.respond_to?(:to_s) ? attribute.to_s.humanize : attribute
end

.lookup_ancestorsObject



33
34
35
# File 'lib/active_interactor/result.rb', line 33

def lookup_ancestors
  [self]
end

.success(data: {}) ⇒ Object



17
18
19
# File 'lib/active_interactor/result.rb', line 17

def success(data: {})
  new(status: STATUS[:success], data: data)
end

Instance Method Details

#failure?Boolean Also known as: failed?

Returns:

  • (Boolean)


59
60
61
# File 'lib/active_interactor/result.rb', line 59

def failure?
  !success?
end

#read_attribute_for_validation(attribute_name) ⇒ Object



64
65
66
# File 'lib/active_interactor/result.rb', line 64

def read_attribute_for_validation(attribute_name)
  data[attribute_name]
end

#success?Boolean Also known as: successful?

Returns:

  • (Boolean)


68
69
70
# File 'lib/active_interactor/result.rb', line 68

def success?
  @status == STATUS[:success]
end