plribeiro3000/validates_cpf

View on GitHub
lib/validates_cpf/cpf_validator.rb

Summary

Maintainability
A
35 mins
Test Coverage
# frozen_string_literal: true

class CpfValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    cpf = ValidatesCpf::Cpf.new(value)

    if cpf.valid?
      record.send("#{attribute}=", cpf.number) if options[:mask]
    else
      ruby_prior_version_three =
        Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.0.0')

      if ruby_prior_version_three
        record.errors.add(attribute, :invalid, options)
      else
        record.errors.add(attribute, :invalid, **options)
      end
    end
  end
end