Un validador de CUIT/CUIL para ActiveModel & Rails.
Lo de siempre... agregar esta línea en el Gemfile del proyecto:
gem 'valicuit'
Y, finalmente, ejecutar bundle install
Es un validador más. Dentro de cualquier modelo se especifica que un atributo X se valide con cuit (o cuil, es indistinto), de esta forma:
class Persona < ActiveRecord::Base
validates :cuit, cuit: true # Notar que también podría usarse cuil: true
end
Con esto, se dispone de validación por formato (por defecto 11 dígitos, sin separador) y por dígito verificador (con el algoritomo módulo 11)
Se puede agregar la opción de incluir y validar un separador para los grupos que componen el CUIT/CUIL, de esta forma:
class Persona < ActiveRecord::Base
validates :cuit, cuit: { separator: '-' }
end
Adicionalmente se puede validar que la parte del género y del DNI del CUIT se corresponda con dichos campos propios en el mismo modelo.
Por ejemplo, para el caso del DNI podría ser:
class Persona < ActiveRecord::Base
validates :cuit, cuit: { dni_compatible: :documento }
end
Y eso verificaría que la parte central del CUIT (que corresponde al DNI) sea igual al valor del campo 'documento' (qué, en dicho modelo, representaría el DNI de la persona)
Análogamente se cumple lo mismo para el género:
class Persona < ActiveRecord::Base
validates :cuit, cuit: { gender_compatible: { field: :genero, male: 'M', female: 'F', company: 'C' } }
end
Y se especifica el campo que representa el género en el modelo, más los valores para validar tales géneros.
Notar que la opción company, para validar CUITs de empresas/instituciones, es opcional (pasará la validación directamente en caso de no estar especificado) mientras que las opciones male, female y field no lo son.
Se corren con RSpec.
- Clonar el proyecto.
- Crear un feature branch (
git checkout -b mi-nuevo-feature
). - Commitear los cambios realizados (
git commit -am 'Agrego algo nuevo o mejoro algo'
). - Pushear el feature (
git push origin mi-nuevo-feature
). - Crear un Pull Request.