You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
2.0 KiB
50 lines
2.0 KiB
# Como usar a classe CNPJ no seu ActiveRecord
|
|
|
|
Objetos da classe CNPJ recebem strings representando números de CNPJ e verificam a validade destes números usando dois critérios:
|
|
|
|
1. O formato da string, que deve seguir o padrão xx.xxx.xxx/xxxx-xx, onde 'x' pode ser qualquer dígito de 0 a 9 e os traços (-), barra (/) e pontos (.) *são opcionais*.
|
|
2. O conteúdo numérico desta string, que é validado através do cálculo do 'módulo 11' dos dígitos que compõem a string.
|
|
|
|
Caso o conteúdo da string obedeça ao formato especificado acima, o mesmo será formatado para obedecer ao padrão xx.xxx.xxx/xxxx-xx
|
|
|
|
É importante observar que caso você associe um valor de CNPJ inválido ao seu model, o mesmo passará automaticamente a ser inválido, o que impede que valores de CNPJ incorretos sejam salvos no banco de dados.
|
|
|
|
Suponha que temos um model Empresa, com um atributo 'cnpj' que você quer usar como um número de documento para CNPJ. Basta usar o método `usar_como_cnpj`, assim:
|
|
|
|
```ruby
|
|
class Empresa < ActiveRecord::Base
|
|
usar_como_cnpj :cnpj
|
|
end
|
|
```
|
|
|
|
## Agora você pode usar o atributo para CNPJ da seguinte forma:
|
|
|
|
```ruby
|
|
e = Empresa.new
|
|
e.cnpj = "69103604000160"
|
|
puts e.cnpj # ==> 69.103.604/0001-60
|
|
e.cnpj.valido? # ==> true
|
|
e.cnpj_valido? # ==> true
|
|
|
|
e = Empresa.new(:cnpj => "69.103.604/0001-60")
|
|
puts e.cnpj # ==> 69.103.604/0001-60
|
|
|
|
e = Empresa.new
|
|
e.cnpj = Cnpj.new("691036040001-60")
|
|
puts e.cnpj # ==> 69.103.604/0001-60
|
|
|
|
e = Empresa.new
|
|
e.cnpj = "12343" # ==> um cnpj invalido
|
|
puts e.valid? # ==> false
|
|
e.save # ==> false
|
|
e.errors.on(:cnpj) # ==> 'não é válido' # de acordo com a I18n
|
|
|
|
c = Cnpj.new("69103604000160")
|
|
e.cnpj = "69.103.604/0001-60"
|
|
c == e.cnpj # ==> true
|
|
```
|
|
|
|
# Como usar a classe CPF no seu ActiveRecord
|
|
|
|
Objetos da classe CPF seguem especificações semelhantes as da classe CNPJ, possuindo apenas alterações na validação para acomodar o formato dos números de CPF e têm seus métodos alterados de `usar_como_cnpj` para `usar_como_cpf`, por exemplo.
|