मेरे पास एक डोमेन क्लास है जिसके लिए इसे अपने किसी एक फ़ील्ड में बनाया जाने वाला दिन होना चाहिए।Grails: क्या मैं केवल एक वैध (0 अपडेट नहीं/संपादित कर सकता हूं)
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 एच मुझे पूरी तरह से यकीन नहीं है कि आपके उत्तर का उपयोग कैसे करें। मेरे पास निम्न त्रुटि है जिसके कारण यह त्रुटि है:
myInstance.iAmGonnaChangeThisInSeveralDays = "nachos"
myInstance.save()
if(myInstance.hasErrors()){
println "This keeps happening because of the stupid date problem"
}
यह कभी ऐसा होता है कि 'startDate' के बाद अद्यतन किया जाता होगा प्रारंभिक बचत? –
कभी नहीं बदला जाना चाहिए। – Mikey