Sha256: 505202b0f64d691068d6da980efb546f884360c727e70bee0f8bc76bce87482b

Contents?: true

Size: 917 Bytes

Versions: 41

Compression:

Stored size: 917 Bytes

Contents

# frozen_string_literal: true

class MiniDefender::Rules::InField < MiniDefender::Rule
  def initialize(field)
    raise ArgumentError, 'Field must be a string.' unless field.is_a?(String)

    @field = field
  end

  def self.signature
    'in_field'
  end

  def self.make(args)
    raise ArgumentError, 'Expected one argument, target field name.' unless args.length == 1

    new(args[0])
  end

  def passes?(attribute, value, validator)
    @field_value = nil
    return false unless validator.data.key(@field)

    @field_value = validator.data[@field]
    return false unless field.is_a?(Array)

    @field_value.include?(value)
  end

  def message(attribute, value, validator)
    case @field_value
    when nil
      "The field (#{@field}) is missing."
    when Array
      "The field (#{@field}) must be an array."
    else
      "The value must be one of the values found in #{@field}."
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
mini_defender-0.6.8 lib/mini_defender/rules/in_field.rb
mini_defender-0.6.7 lib/mini_defender/rules/in_field.rb
mini_defender-0.6.5 lib/mini_defender/rules/in_field.rb
mini_defender-0.6.4 lib/mini_defender/rules/in_field.rb
mini_defender-0.6.3 lib/mini_defender/rules/in_field.rb
mini_defender-0.6.2 lib/mini_defender/rules/in_field.rb
mini_defender-0.6.1 lib/mini_defender/rules/in_field.rb
mini_defender-0.6.0 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.8 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.7 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.6 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.5 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.4 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.3 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.2 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.1 lib/mini_defender/rules/in_field.rb
mini_defender-0.5.0 lib/mini_defender/rules/in_field.rb
mini_defender-0.4.1 lib/mini_defender/rules/in_field.rb
mini_defender-0.4.0 lib/mini_defender/rules/in_field.rb
mini_defender-0.3.14 lib/mini_defender/rules/in_field.rb