Class: ActionLogic::ActionValidation::PresenceValidation

Inherits:
BaseValidation
  • Object
show all
Defined in:
lib/action_logic/action_validation/presence_validation.rb

Class Method Summary collapse

Methods inherited from BaseValidation

error_message_format

Class Method Details

.error_message(expected_attribute, expected_validation, context) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/action_logic/action_validation/presence_validation.rb', line 22

def self.error_message(expected_attribute, expected_validation, context)
  case expected_validation[:presence]
  when TrueClass then "Attribute: #{expected_attribute} is missing value in context but presence validation was specified" unless context[expected_attribute]
  when Proc      then "Attribute: #{expected_attribute} is missing value in context but custom presence validation was specified" unless expected_validation[:presence].call(context[expected_attribute])
  else
    raise ActionLogic::UnrecognizablePresenceValidatorError.new(error_message_format("Presence validator: #{expected_validation[:presence]} is not a supported format"))
  end
end

.presence_errors(validation_rules, context) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/action_logic/action_validation/presence_validation.rb', line 14

def self.presence_errors(validation_rules, context)
  validation_rules.reduce([]) do |error_collection, (expected_attribute, expected_validation)|
    next error_collection unless expected_validation[:presence]
    error_collection << error_message(expected_attribute, expected_validation, context)
    error_collection
  end || []
end

.validate!(validation_rules, context) ⇒ Object



8
9
10
11
12
# File 'lib/action_logic/action_validation/presence_validation.rb', line 8

def self.validate!(validation_rules, context)
  return unless validation_rules.values.find { |expected_validation| expected_validation[:presence] }
  errors = presence_errors(validation_rules, context)
  raise ActionLogic::PresenceError.new(errors) if errors.any?
end