Sha256: ed9a957a06475a2f34c63716411b3774747da77d784099ebd32981370510d7d3

Contents?: true

Size: 733 Bytes

Versions: 2

Compression:

Stored size: 733 Bytes

Contents

class EqualityValidator < ActiveModel::EachValidator

  def validate_each(record, attribute, value)
    to_value = options[:to]
    operator = OPERATORS.fetch(options[:operator])

    if (options[:operator] == :less_than) || (options[:operator] == :greater_than)
	    raise Exception if to_value.nil? || operator.nil?
  	end

    unless value.send(operator, record.send(to_value.to_sym))
      record.errors[attribute] << (options[:message] || I18n.t('active_validation.errors.messages.equality', attr: to_value, operator: operator))
    end
  end

  private

  OPERATORS = {
    less_than: :<,
    less_than_or_equal_to: :<=,
    greater_than: :>,
    greater_than_or_equal_to: :>=,
    equal_to: :==,
    not_equal_to: :!=
  }

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
active_validation-1.1.0 lib/active_validation/validators/equality_validator.rb
active_validation-1.0.0 lib/active_validation/validators/equality_validator.rb