lib/cieloz/requisicao_transacao/dados_portador.rb in cieloz-0.0.14 vs lib/cieloz/requisicao_transacao/dados_portador.rb in cieloz-0.0.15
- old
+ new
@@ -21,12 +21,11 @@
end
validates :numero, format: { with: /\A\d{16}\z/ }
validates :codigo_seguranca, format: { with: /\A(\d{3}|\d{4})\z/ }
- validate :valida_ano_validade, unless: ->{ validade.nil? }
- validate :valida_mes_validade, unless: ->{ validade.nil? }
+ validate :valida_validade
validates :indicador, presence: true
def self.map(source, opts={})
num, val, cod, nome = attrs_from source, opts,
@@ -87,18 +86,13 @@
flag.codigo_seguranca = 123
}
end
private
- def valida_mes_validade
- if mes = validade[4..5]
- errors.add :validade, :invalid_month unless mes.length == 2 and mes.to_i.between? 1, 12
- end
- end
-
- def valida_ano_validade
- if ano = validade[0..3]
- errors.add :validade, :invalid_year if ano.to_i < Date.today.year
- end
+ def valida_validade
+ val = validade.to_i
+ min = Date.today.strftime("%Y%m").to_i
+ max = 10.years.from_now.strftime("%Y%m").to_i
+ errors.add :validade, :invalid unless val.between?(min, max) and val % 100 <= 12
end
end
end