Class: MiniDefender::Rules::RequiredIf

Inherits:
Required show all
Defined in:
lib/mini_defender/rules/required_if.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Required

#message, #passes?

Methods inherited from MiniDefender::Rule

#active?, available?, #bails?, #coerce, #default_value, #defaults?, #error_message, #excluded?, #force_coerce?, #message, #passes?, #priority, #stops?, #with_message

Constructor Details

#initialize(target, value) ⇒ RequiredIf

Returns a new instance of RequiredIf.



6
7
8
9
10
11
12
13
# File 'lib/mini_defender/rules/required_if.rb', line 6

def initialize(target, value)
  unless target.is_a?(String)
    raise ArgumentError, 'Target must be a string'
  end

  @target = target
  @value = value
end

Class Method Details

.make(args) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/mini_defender/rules/required_if.rb', line 19

def self.make(args)
  unless args.length == 2
    raise ArgumentError, 'Target and expected value are required.'
  end

  self.new(args[0], args[1])
end

.signatureObject



15
16
17
# File 'lib/mini_defender/rules/required_if.rb', line 15

def self.signature
  'required_if'
end

Instance Method Details

#implicit?(validator) ⇒ Boolean

Returns:



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/mini_defender/rules/required_if.rb', line 27

def implicit?(validator)
  unless validator.data.key?(@target)
    return false
  end

  target_value = validator.data[@target]

  case target_value
    when Array
      target_value.include?(@value)
    when Hash
      target_value.keys.include?(@value)
    else
      target_value == @value
  end
end