Sha256: 45ea7653de26afa16480cfa36093e27e0e7f59d4a32051bf33b321a038d9085c

Contents?: true

Size: 729 Bytes

Versions: 7

Compression:

Stored size: 729 Bytes

Contents

# frozen_string_literal: true

class CompareValidator < BaseValidator

  CHECKS = {
    less_than: :<,
    less_than_or_equal_to: :<=,
    greater_than: :>,
    greater_than_or_equal_to: :>=,
    equal_to: :==,
    not_equal_to: :!=
  }.freeze

  def validate_each(record, attribute, value)
    assert_valid_to!
    assert_valid_check!
    super
  end

  private

  def assert_valid_check!
    assert_valid_option!(:check, CHECKS.keys)
  end

  def assert_valid_to!
    return if options.key?(:to)

    raise ArgumentError, 'Missing ":to" attribute for comparison.'
  end

  def check
    options[:check] || :equal_to
  end

  def valid_attr?
    other = record.send(options[:to])
    value.send(CHECKS[check], other)
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lite-validators-1.5.0 lib/lite/validators/compare_validator.rb
lite-validators-1.4.0 lib/lite/validators/compare_validator.rb
lite-validators-1.3.2 lib/lite/validators/compare_validator.rb
lite-validators-1.3.1 lib/lite/validators/compare_validator.rb
lite-validators-1.3.0 lib/lite/validators/compare_validator.rb
lite-validators-1.2.0 lib/lite/validators/compare_validator.rb
lite-validators-1.1.2 lib/lite/validators/compare_validator.rb