Ben onun alanlarından birine oluşturulduktan gün sonra bir tarih olması gerekir etki alanı sınıf var sadece oluşturmak için geçerli yapabilirsiniz.Grails: Bir doğrulayıcı (/ düzenle güncellemek değil)
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)
})
}
}
Yani birkaç gün sonra sadece dize değiştirmek ve doğrulayıcı tarihini yeniden denetlemek çünkü kaydetme başarısız kaydetmek arayıp geçmişte şimdi olduğu zaman. Doğrulayıcıyı yalnızca oluştururken tetiklenecek şekilde ayarlayabilir miyim, yoksa oluşturduğumuz veya düzenlediğimizi/güncellediğimizi tespit etmek için onu değiştirebileceğim bir yol var mı?
@Rob H Cevabını nasıl kullanılacağını tamamen emin değilim. Ben bu hataya neden aşağıdaki kodu vardır:
myInstance.iAmGonnaChangeThisInSeveralDays = "nachos"
myInstance.save()
if(myInstance.hasErrors()){
println "This keeps happening because of the stupid date problem"
}
hiç startDate' sonra güncellenir 'Eğer durum olacak İlk kaydetme? –
Asla değişmemeli. – Mikey