Module: Interactor::Validation::Validates::InstanceMethods

Defined in:
lib/interactor/validation/validates.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
# File 'lib/interactor/validation/validates.rb', line 119

def self.prepended(base)
  # Include all validator modules
  base.include(Validators::Presence)
  base.include(Validators::Numeric)
  base.include(Validators::Boolean)
  base.include(Validators::Format)
  base.include(Validators::Length)
  base.include(Validators::Inclusion)
  base.include(Validators::Hash)
  base.include(Validators::Array)
end

Instance Method Details

#errorsObject



131
132
133
# File 'lib/interactor/validation/validates.rb', line 131

def errors
  @errors ||= Errors.new(halt_checker: -> { validation_config(:halt) })
end

#run_validations!Object



135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/interactor/validation/validates.rb', line 135

def run_validations!
  param_errors = false

  begin
    # Run parameter validations
    if self.class._validations
      self.class._validations.each do |param, rules|
        value = context.respond_to?(param) ? context.public_send(param) : nil
        validate_param(param, value, rules)
      end
      param_errors = errors.any?
    end

    # Run custom validations if defined
    # Skip if param validations failed and skip_validate is true
    validate! if respond_to?(:validate!, true) && !(param_errors && validation_config(:skip_validate))
  rescue HaltValidation
    # Validation halted on first error - fall through to fail context
  end

  # Fail context if any errors exist
  context.fail!(errors: format_errors) if errors.any?
end