Sha256: cf1a198ebe3db8499f832ea728de5d16cab188701683c529b2f698b8a513162e
Contents?: true
Size: 743 Bytes
Versions: 5
Compression:
Stored size: 743 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.public_send(options[:to]) value.public_send(CHECKS[check], other) end end
Version data entries
5 entries across 5 versions & 1 rubygems