module Interaktor::Organizer::InstanceMethods
Public Instance Methods
call()
click to toggle source
Invoke the organized Interaktors. An Interaktor::Organizer
is expected NOT to define its own `#call` in favor of this default implementation.
@return [void]
# File lib/interaktor/organizer.rb, line 41 def call check_attribute_flow_valid self.class.organized.each do |interaktor| catch(:early_return) { interaktor.call!(@context) } end end
Private Instance Methods
check_attribute_flow_valid()
click to toggle source
@return [void]
# File lib/interaktor/organizer.rb, line 52 def check_attribute_flow_valid interaktors = self.class.organized # @type [Array<Symbol>] success_attributes_so_far = [] success_attributes_so_far += self.class.required_input_attributes # @param interaktor [Class] interaktors.each do |interaktor| interaktor.required_input_attributes.each do |required_attr| unless success_attributes_so_far.include?(required_attr) raise Interaktor::Error::OrganizerMissingPassedAttributeError.new(interaktor, required_attr) end end success_attributes_so_far += interaktor.success_attributes next unless interaktor == interaktors.last self.class.success_attributes.each do |success_attr| unless success_attributes_so_far.include?(success_attr) raise Interaktor::Error::OrganizerSuccessAttributeMissingError.new(interaktor, success_attr) end end end end