के बाद काम नहीं कर रहा है मैं अपने Grails 1.3.7 ऐप को 2.0.3 में अपग्रेड करने की प्रक्रिया में हूं और मैंने अधिकांश मुद्दों को ठीक किया है। हालांकि, मेरे पास ऐसा कोड है जो काम करने के लिए उपयोग किया जाता है जो उपयोगकर्ता बनाता है और उन्हें डेटाबेस में सहेजता है। कोड सत्यापन को पास नहीं करना चाहिए क्योंकि मैं पहले से ही लिया गया उपयोगकर्ता नाम का पुन: उपयोग कर रहा हूं और उपयोगकर्ता नाम पर एक अनूठी बाधा है। .validate()
सत्य लौटाता है, लेकिन तब कोड वास्तव में बम करता है जब user.save()
को MySQL अद्वितीय बाधा त्रुटि के साथ बुलाया जाता है।ग्रेल्स प्रमाणीकरण
def submitSignup = {
def user = new User(params)
user.validate()
if (!user.hasErrors()) {
...
// This line bombs with the MySql unique constraint I would have expected .validate() to get
user.save()
}
}
User.groovy में:
static constraints = {
username(blank: false, unique: true);
...
}
कोई भी विचार
एक त्रुटि फेंक देना चाहिए?
संपादित करें: मैं एसीगी से स्प्रिंग सुरक्षा प्लगइन में भी अपग्रेड कर रहा हूं। मुझे नहीं लगता कि यह प्रासंगिक होगा, लेकिन मुझे लगा कि मैं इसका उल्लेख करूंगा। https://github.com/skazzaks/Grails-Unique-Test इस बनाता है यह निश्चित रूप से एक बग की तरह लग रहे:
मैं एक नमूना है कि समस्या पर से ग्रस्त रखा।
क्या यह आपके लिए परीक्षण में विफल रहा है या आप इस मुद्दे पर कैसे आए? मैंने एक साधारण इकाई परीक्षण स्थापित किया है और अद्वितीय बाधा मेरे लिए ठीक से काम कर रही है। –
@JarredOlson यह तब विफल रहा है जब मैंने एप्लिकेशन चलाया और एक नया उपयोगकर्ता सबमिट करने का प्रयास किया (जिसका उपयोगकर्ता नाम पहले ही लिया गया है)। यह मेरे उत्पादन में 1.3.7 संस्करण पर सही ढंग से काम करता है। मुझे यकीन नहीं है कि असमानता के लिए कैसे खाते हैं। – skaz
यह चल रहा था, जबकि एक grails आवेदन के लिए अद्वितीय बाधा जोड़ने के बाद मैं कुछ हद तक संबंधित सत्यापन मुद्दे का सामना कर रहा था। मान्य() उन मानों के बारे में शिकायत नहीं करता है जहां अद्वितीय नहीं है। यह लक्ष्य निर्देशिका को मैन्युअल रूप से हटाने और संकलित करने में मदद करता है। – HumanInDisguise