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