2013-03-07 2 views
0

мне нужно написать ограничение для кредитных карт истечения года в ограниченияхограничения inlist для целого

Это мои ограничения

static constraints = { 
    cardNumber(nullable:false, blank:false, creditCard:true) 
    expiryMonth(nullable:false, range:1..12) 
    expiryYear(nullable:false, range:(defaultExpiryYear)..(defaultExpiryYear + YEARS_TO_LIST)) 
} 

где defaultExpiryYear = Current Year - 2000 и YEARS_TO_LIST = 10 years.

Но этот случай не сработает, если год 2095, потому что диапазон будет идти expiryYear(nullable:false, range:95..105) но как expiryYear только 2 цифры для 2105 года это даст 05 и это не получится.

Как преобразовать его в список входных данных для диапазона?

+1

Можете ли вы записать срок годности как полный год, а всего лишь 2 цифры? С ним было бы намного легче справиться. – user553180

ответ

0

Я мог ошибаться, но, с моей точки зрения, вы не должны беспокоиться о вещах, которые в будущем будут составлять около 90 лет. через 90 лет - кто может гарантировать, что есть еще кредитные карты? если есть еще кредитные карты, будет ли у них «год истечения срока действия»? если у них будет дата истечения срока действия, как она рассчитывается?

так, жаль, что это не может быть ответа вы ожидали, но, учитывая скорость развития за последние несколько лет я бы не беспокоиться о вашей проблеме в любом случае;)

0

Это, как я это исправить пожалуйста, комментарий, если у вас есть какие-либо другие хорошие идеи где epiryStartYear и expiryEndYear 4 цифры год expiryYear (обнуляемые: ложные, InList :(getExpiryRangeList()))

def static private getExpiryRangeList() { 
def yearList = [] 
(expiryStartYear..expiryEndYear).each { 
    yearList << it % 100 
} 
yearList 
} 

ИЛИ я могу сделать

def static private getExpiryRangeList() { 
[expiryStartYear..expiryEndYear].collect(it % 100) 
} 
Смежные вопросы