Grails: можно ли использовать валидатор только для создания (а не для обновления / редактирования)

У меня есть класс домена, в одном из полей которого должна быть дата после дня, когда он был создан.

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"
}
7
задан skaffman 23 February 2012 в 10:16
поделиться