CPF and CNPJ validations for ActiveModel and Rails.
As gem:
# in Gemfile gem 'validates_cpf_cnpj' # Run bundler $ bundle install
Validating a CPF attribute:
class Patient < ActiveRecord::Base validates_cpf :cpf_attr # or validates :cpf_attr, :cpf => true end
Validating a CNPJ attribute:
class Supplier < ActiveRecord::Base validates_cnpj :cnpj_attr # or validates :cnpj_attr, :cnpj => true end
Validating an attribute that can store both CPF or CNPJ:
class Customer < ActiveRecord::Base validates_cpf_or_cnpj :cpf_cnpj_attr # or validates :cpf_cnpj_attr, :cpf_or_cnpj => true end
Regular validation options:
:allow_nil - Allows a nil value to be valid :allow_blank - Allows a nil or empty string value to be valid :if - Executes validation when :if evaluates true :unless - Executes validation when :unless evaluates false :on - Specifies validation context (e.g :save, :create or :update). Default is :save :message - Sets a custom message to be passed to the attribute (default is 'is invalid')
CPF and CNPJ formatting:
When you run the validation on an attribute, if the value is a valid CPF or CNPJ, it will be formatted as so: - valid CPF will be returned as 999.999.999-99 - valid CNPJ will be returned as 99.999.999/9999-99
Feel free to fork, fix and send me a pull request.
Released under the MIT license: