module ActiveRecord::Normalizations::ClassMethods

Public Instance Methods

normalizes(attr, **normalizations) click to toggle source

normalize :firstname, spaces: true, text_transform: :capitalize

# File lib/activerecord-normalizations/normalizations.rb, line 17
def normalizes(attr, **normalizations)
  attr_str = attr.to_s

  normalizations.each do |key, options|
    next unless options

    key = "#{key.to_s.camelize}Normalizer"

    begin
      klass = key.include?("::") ? key.constantize : const_get(key)
    rescue NameError
      raise ArgumentError, "Unknown validator: '#{key}'"
    end

    normalizer = klass.new(_parse_normalizer_options(options))
    _normalizers[attr_str] << normalizer
  end
end

Private Instance Methods

_parse_normalizer_options(opts) click to toggle source
# File lib/activerecord-normalizations/normalizations.rb, line 44
def _parse_normalizer_options(opts)
  case opts
  when TrueClass
    DEFAULT_OPTIONS
  when Hash
    opts
  when String, Symbol
    { with: opts }
  else
    raise
  end
end