मेरे पास एक ActiveRecord मॉडल है जो true
valid?
(और .errors खाली है) से लौट रहा है, लेकिन save()
से false
लौटा रहा है। यदि मॉडल इंस्टेंस मान्य है, तो मैं कैसे पता लगा सकता हूं कि सहेजने में विफलता क्या हो रही है?रेल में, मैं कैसे पता लगा सकता हूं कि एक .save() विफल होने के कारण, सत्यापन त्रुटियों के अलावा?
उत्तर
अपने सभी कॉलबैक की जाँच करें।
मुझे इस तरह की समस्या थी जहां मेरे पास था और "after_validate" विधि जो मॉडल में बदलावों के एक समूह के बाद विफल रही थी। मॉडल मान्य था लेकिन "after_validate" झूठा लौट रहा था, इसलिए यदि मैंने model.valid
का उपयोग किया तो यह सच कहा गया, लेकिन फिर अगर मैंने सहेजा तो मुझे सत्यापन त्रुटियां मिलीं (बाद में वैध कॉलबैक से गुजरती हैं)। वह अजीब था।
एप्लिकेशन ट्रेस को देखें और आपको यह देखने में सक्षम होना चाहिए कि कोड की कौन सी पंक्ति अपवाद उठा रही है।
जेफ की टिप्पणी के अनुसार, समस्या पहले से सहेजा गया कॉलबैक झूठी लौट रहा है। – kdt
@kdt - यह वही है जो मेरी समस्या थी। मैंने इसके बारे में सोचा नहीं था क्योंकि पहले_सेव सिर्फ एक संपत्ति सेट करने के लिए था, लेकिन क्योंकि यह इसे झूठे मूल्य पर स्थापित कर रहा था, जिसे पूरी तरह से वापस कर दिया गया था और जिससे सहेजने से चुपचाप विफल हो गया। चमकदार तरफ, अब मेरे पास लाइन को जोड़कर इस कोड को ठीक करने का विकल्प है "अरे! यह मेरा नकली पैर है!" # मानो या नहीं, यह महत्वपूर्ण है। ऐसा नहीं है कि मैं ऐसा करूँगा।;) –
एक अच्छा एक वास्तविक वापसी मूल्य सुनिश्चित करने के लिए रास्ता 'true.tap {do_something}' –
बैंग संस्करण save!
(अंत में विस्मयादिबोधक चिह्न के साथ) का उपयोग करने और परिणामी त्रुटि का निरीक्षण करने का प्रयास करें।
+1 त्वरित और गंदे लेकिन यह हमेशा होता है जो मैं करता हूं – DanSingerman
बचाओ! बस एक रिकॉर्ड नॉटस्वेड फेंक रहा है (जब मैं अपवाद के मैसेज को प्रिंट करता हूं तो मुझे अपवाद वर्ग का नाम मिलता है)। क्या कहीं और मुझे और विस्तार की तलाश करनी चाहिए? – kdt
यदि आप रेल विकास मोड में हैं, तो इसे स्टैक ट्रेस के साथ त्रुटि का पूरा विवरण प्रिंट करना चाहिए। किसी भी सुराग के लिए एक नज़र डालें और/या इसे यहां पोस्ट करें। –
@user.save
(उदाहरण के लिए) देता है, तो false
, तो बस यह सब त्रुटियों प्राप्त करने के लिए चलाएँ:
@user.errors.full_messages
जैसा कि मैंने प्रश्न में उल्लेख किया है,। वैध? सत्य है - यानी कोई नहीं है सत्यापन त्रुटियों। मैंने यह जांच लिया है .errors एक खाली सूची भी लौट रहा है (मैंने उस बिंदु को इंगित करने के लिए प्रश्न अपडेट किया है) – kdt
हां, मुझे यकीन है कि मैं अपने सभी before_ में सच वापसी करके इस समस्या का समाधान हो * कॉलबैक तो यह काम करना शुरू :)
समस्या मैं था कि मैं मॉडल के लिए मान्यता जोड़ने के लिए भूल गया था।
class ContactGroup < ActiveRecord::Base
validates_presence_of :name
end
- 1. मैं कैसे पता लगा सकता हूं कि मेरा पृष्ठ पोस्टबैक
- 2. मैं कैसे पता लगा सकता हूं कि जेनकिंस
- 3. मैं कैसे पता लगा सकता हूं कि जावास्क्रिप्ट एक अजाक्स अनुरोध का कारण बनता है?
- 4. मैं कैसे पता लगा सकता हूं कि वीबी.Net DataRow
- 5. रेल में सत्यापन से पहले मैं मूल्य से डॉलर के संकेत कैसे लगा सकता हूं?
- 6. मैं फ़ाइल के एन्कोडिंग का पता कैसे लगा सकता हूं?
- 7. (आईओएस + स्टोरकिट) क्या मैं पता लगा सकता हूं कि जब मैं सैंडबॉक्स में हूं?
- 8. मैं कैसे पता लगा सकता हूं कि एक TadoConnection सर्वर के साथ संचार खो दिया?
- 9. छवियों में मैं कैसे पता लगा सकता हूं (और सही)?
- 10. मैं सी में पैलिंड्रोम का पता कैसे लगा सकता हूं?
- 11. मैं कैसे पता लगा सकता हूं कि बिना किसी देरी के जावा नेटवर्क कनेक्ट नहीं है?
- 12. जावास्क्रिप्ट के साथ क्विकटाइम स्थापित होने पर मैं कैसे पता लगा सकता हूं?
- 13. मैं सी में कुंजी के स्ट्रोक के एक या संयोजन का पता कैसे लगा सकता हूं?
- 14. मैं cocos2d में स्पर्श का पता कैसे लगा सकता हूं?
- 15. मैं सी ++ स्ट्रिंग में "_" का पता कैसे लगा सकता हूं?
- 16. रेल 3: कैसे विफल रही सत्यापन
- 17. सेटअपटोल के साथ अंडे बनाने के दौरान मैं प्रोग्रामिक रूप से त्रुटियों का पता कैसे लगा सकता हूं?
- 18. मैं कैसे पता लगा सकता हूं कि बैश में एक सिम्लिंक टूट गया है या नहीं?
- 19. मैं कैसे पता लगा सकता हूं कि पर्ल में एक सिम्लिंक टूट गया है?
- 20. क्या मैं वाल्ग्रिंड के साथ पूर्णांक ओवरफ्लो त्रुटियों का पता लगा सकता हूं?
- 21. मैं कैसे पता लगा सकता हूं कि एक आईफोन से हार्डवेयर कीबोर्ड जुड़ा हुआ है?
- 22. एंड्रॉइड 2.2 - मैं कैसे पता लगा सकता हूं कि मैं एसडीकार्ड पर स्थापित हूं या नहीं?
- 23. मैं कैसे पता लगा सकता हूं कि मैं किस गिट का संस्करण चला रहा हूं?
- 24. मैं कैसे पता लगा सकता हूं कि मैं किस सिद्धांत का चल रहा हूं?
- 25. मैं कैसे पता लगा सकता हूं कि मैं रिपोर्टलाब का कौन सा संस्करण चला रहा हूं?
- 26. मैं कैसे पता लगा सकता हूं कि SQLite अनुक्रमणिका अद्वितीय है या नहीं? (एसक्यूएल के साथ)
- 27. विंडोज 7/Vista में .NET Framework सुविधा "बंद" होने पर मैं कैसे पता लगा सकता हूं?
- 28. मैं कैसे पता लगा सकता हूं कि मेरी खिड़की WxPython के साथ कम हो गई है?
- 29. मैं कैसे पता लगा सकता हूं कि क्रोम एक्सटेंशन सक्षम किया गया है (अक्षम होने के बाद)
- 30. मैं कैसे पता लगा सकता हूं कि ऑब्जेक्ट को तुरंत चालू किया गया है?
मुझे कुछ हफ्ते पहले यह समस्या थी। कुछ रिफैक्टरिंग ने पहले_सव फ़ंक्शन को हर समय झूठा लौटा दिया था, जिससे विफल होने का कारण बनता है। –
@ जेफ - धन्यवाद, यह पता चला है कि एक था: first_save विधि झूठी लौट रही है। तुम्हे कैसे पता चला? क्या यह सिर्फ कोड निरीक्षण था? – kdt
यह कोड निरीक्षण था, और संस्करण नियंत्रण के खिलाफ diffs कर रहा था। –