Class: BitwiseValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/active_record/bitwise/bitwise_validator.rb

Overview

Custom validator supporting validates :attribute, bitwise: true

Instance Method Summary collapse

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/active_record/bitwise/bitwise_validator.rb', line 12

def validate_each(record, attribute, value)
  return if value.nil?

  definition = T.unsafe(record.class).bitwise_definitions[attribute.to_sym]
  return unless definition

  mapping = definition[:mapping]
  mapping_strings = mapping.keys.map(&:to_s)
  invalid_values = Kernel.Array(value).reject { |val| val.nil? || val == '' || mapping_strings.include?(val.to_s) }

  return unless invalid_values.any?

  T.unsafe(record).errors.add(attribute, "contains invalid values: #{invalid_values.join(', ')}")
end