У меня есть класс домена, в одном из полей которого должна быть дата после дня, когда он был создан.
class myClass {
Date startDate
String iAmGonnaChangeThisInSeveralDays
static constraints = {
iAmGonnaChangeThisInSeveralDays(nullable:true)
startDate(validator:{
def now = new Date()
def roundedDay = DateUtils.round(now, Calendar.DATE)
def checkAgainst
if(roundedDay>now){
Calendar cal = Calendar.getInstance();
cal.setTime(roundedDay);
cal.add(Calendar.DAY_OF_YEAR, -1); // <--
checkAgainst = cal.getTime();
}
else checkAgainst = roundedDay
return (it >= checkAgainst)
})
}
}
Итак, несколько дней спустя, когда я меняю только строка и вызов сохранить сохранение не удается, потому что валидатор повторно проверяет дату, и теперь она в прошлом. Могу ли я настроить валидатор так, чтобы он запускался только при создании, или есть способ изменить его, чтобы определять, создаем ли мы, редактируем / обновляем?
@Rob H Я не совсем уверен, как использовать ваш ответ. У меня есть следующий код, вызывающий эту ошибку:
myInstance.iAmGonnaChangeThisInSeveralDays = "nachos"
myInstance.save()
if(myInstance.hasErrors()){
println "This keeps happening because of the stupid date problem"
}