में कोई त्रुटि नहीं है, सहेजने के दौरान मॉडल सहेजते समय मुझे सत्यापन त्रुटियों में कोई समस्या है! ActiveRecord त्रुटि मॉडल त्रुटि संदेश खाली हैं, इसलिए मुझे नहीं पता कि सत्यापन प्रयास पर त्रुटियां क्या हो रही हैं। जब मैं documentation के अनुसार त्रुटियों .full_messages या error.each_full आज़माता हूं, तो यह त्रुटियों को प्रदर्शित करना चाहिए, जो यह नहीं करता है।सत्यापन प्राप्त करने वाले रेल में त्रुटि विफल रही, लेकिन ActiveRecord त्रुटि मॉडल
मॉडल जिसे मैं सहेजने की कोशिश कर रहा हूं वह ऑर्डर मॉडल (स्प्री का उपयोग कर ईकॉमर्स साइट) है। जब ऑर्डर में कोई आइटम हटा दिया जाता है, तो update_totals! कहा जाता है जो कुल योग का पुनर्मूल्यांकन करता है, और फिर बचाओ! कहा जाता है, जो सत्यापन त्रुटि को ट्रिगर करता है (यह त्रुटि बहुत ही कम होती है लेकिन केवल तभी जब मैं में लॉग इन हूं, और मैं इसका कारण ढूंढने में सक्षम हूं)।
validates_numericality_of :item_total
validates_numericality_of :total
मैं order.item_total.inspect, order.total.inspect, और order.errors.full_messages.inspect दर्ज की गई और यह मिल गया:
Wed Jan 25 08:53:08 -0800 2012order item total: #<BigDecimal:15780c60,'0.279E2',8(16)>
Wed Jan 25 08:53:08 -0800 2012order total: #<BigDecimal:152bf410,'0.2448225E2',12(20)>
Wed Jan 25 08:53:08 -0800 2012: ERRORS SAVING ORDER:
Wed Jan 25 08:53:08 -0800 2012[]
आदेश मॉडल अपने मॉडल में दो सत्यापन है item_total और कुल mySQL डेटाबेस में दशमलव (8,2) के रूप में संग्रहीत हैं। अंतिम पंक्ति order.errors.full_messages.inspect है, जो एक खाली सरणी है। सत्यापन त्रुटि इस तरह दिखता है: मेरे सवाल
ActiveRecord::RecordInvalid (Validation failed: {{errors}}):
vendor/extensions/mgx_core/app/models/order.rb:382:in `update_totals!'
vendor/extensions/mgx_core/app/controllers/line_items_controller.rb:7:in `destroy'
app/middleware/flash_session_cookie_middleware.rb:19:in `call'
C:\Users\mgx\My Documents\Aptana Studio 3 Workspace\catalogue-spree\script\server:3
c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/lib/ruby-debug-ide.rb:112:in `debug_load'
c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/lib/ruby-debug-ide.rb:112:in `debug_program'
c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/bin/rdebug-ide:87
c:/Ruby187/bin/rdebug-ide:19:in `load'
c:/Ruby187/bin/rdebug-ide:19
मुझे लगता है कि दोहरा है:
1. क्यों मेरी ActiveRecord त्रुटियों मॉडल नहीं कह रहा है क्या सत्यापन त्रुटि है?
2. मैं इस समस्या को कैसे ठीक करूं? क्या मेरा item_total और दशमलव दशमलव (8,2) के रूप में सहेजने के लिए मान्य है?
मैं रेल 2.3.5 और होड़ 0.10.2
आप डीबी से आदेश और line_item कैसे प्राप्त कर रहे हैं (यानी आपके नियंत्रक कार्रवाई में क्या है)? –
जब कोई उपयोगकर्ता शॉपिंग कार्ट में निकालें बटन हिट करता है, तो यह line_items नियंत्रक में नष्ट नामक फ़ंक्शन को कॉल करता है। नष्ट करने के लिए कोड है: 'LINE_ITEM = LineItem.find (पैरामीटर [: id],: शामिल हैं =>: आदेश) क्रम = line_item.destroy line_item.order order.update_totals' update_totals! कुछ गणित को नए योग की गणना करने के लिए करता है और फिर self.save कहते हैं! जो सत्यापन त्रुटि – Zyren
को ट्रिगर करता है बस यहां मामले में, लेकिन क्या लाइनइटम नष्ट होने पर ऑर्डर को नष्ट कर देता है? दूसरे शब्दों में, क्या आप सुनिश्चित हैं कि कुल योग अपडेट करने से पहले ही आदेश स्वयं ही मान्य है? बचाना! सत्यापन विफलता पर अपवाद फेंकना चाहिए, इसलिए मुझे लगता है कि आपको अपने लॉग या जो भी त्रुटि में त्रुटि दिखाई देगी। –