मैं जो लौटा रहा है एक ActiveRecord मॉडल trueसे valid?(और .errors खाली है), लेकिन लौटने falseसे save()। यदि मॉडल का उदाहरण मान्य है, तो मैं यह कैसे पता लगा सकता हूं कि बचत को विफल करने का कारण क्या है?
मैं जो लौटा रहा है एक ActiveRecord मॉडल trueसे valid?(और .errors खाली है), लेकिन लौटने falseसे save()। यदि मॉडल का उदाहरण मान्य है, तो मैं यह कैसे पता लगा सकता हूं कि बचत को विफल करने का कारण क्या है?
जवाबों:
अपने सभी कॉलबैक की जाँच करें।
मुझे इस तरह की समस्या थी जहां मेरे पास था और "after_validate" विधि जो मॉडल में परिवर्तनों का एक गुच्छा बनाने के बाद विफल हो रही थी। मॉडल वैध था, लेकिन "after_validate" गलत वापस आ रहा था, इसलिए यदि मैंने इसका इस्तेमाल किया तो model.validयह सच है, लेकिन फिर अगर मैंने इसे सहेजा तो मुझे सत्यापन की त्रुटियां हुईं (after_validate callback से गुजरना)। वह अजीब था।
एप्लिकेशन ट्रेस देखें और आपको यह देखने में सक्षम होना चाहिए कि कोड की कौन सी रेखा अपवाद को बढ़ा रही है।
"Hey! That's MY fake leg!" # Believe it or not, this is important। ऐसा नहीं है कि मैं ऐसा करूंगा। ;)
true.tap { do_something }
बैंग संस्करण save!(अंत में एक विस्मयादिबोधक चिह्न के साथ) का उपयोग करने की कोशिश करें और परिणामी त्रुटि का निरीक्षण करें।
save!बढ़ा सकती है ActiveRecord::RecordInvalid(क्योंकि यह सत्यापन चलाता है) या ActiveRecord::RecordNotSavedइसलिए कि आप क्या बचाव करना चाहते हैं।
.saveकि विफलताओं का निदान कैसे करें जो सत्यापन के कारण नहीं हैं। "कम से कम असंतोषजनक" योग्यता रेल को संदर्भित करती है, इस उत्तर को नहीं।
यदि @user.save(उदाहरण के लिए) रिटर्न मिलता है false, तो सभी त्रुटियों को प्राप्त करने के लिए बस इसे चलाएं:
@user.errors.full_messages
हाँ, मैंने यह सुनिश्चित करके इस मुद्दे को ठीक किया कि मैं अपने सभी पहले_ * कॉलबैक में सही लौटाता हूं फिर यह काम करना शुरू कर देता है :)