क्या यह मामला है कि पूरी तरह से शेष क्रिया एक समेकित लेनदेन के तहत है? ऐसा कहने के लिए, यदि मैं अद्यतन, हटा या ऑपरेशन को संभालने में किसी भी बिंदु पर सत्यापन या कॉलबैक में कोई त्रुटि उत्पन्न करता हूं, तो क्या प्रत्येक डेटाबेस ऑपरेशन जिसे मैंने पिछले कॉलबैक में किया हो, वापस भी लुढ़का हुआ है? संक्षेप में, किसी भी कॉलबैक या सत्यापन पर त्रुटि उठाने से ऐसा लगता है कि उस क्रिया क्रिया के लिए डेटाबेस में कोई भी परिवर्तन नहीं होता है?जब लेन-देन (आराम से) रेलों का उपयोग करते समय लेनदेन शुरू होते हैं
उत्तर
क्या यह मामला है कि पूरी शांतिपूर्ण क्रिया एक ही समेकित लेनदेन के तहत है?
नहीं
अगर मैं एक अद्यतन की हैंडलिंग में किसी भी बिंदु पर मान्यता या कॉलबैक में एक त्रुटि बढ़ा, हटाने या आपरेशन बनाएँ, हर डेटाबेस कार्रवाई है कि मैं पिछले में प्रदर्शन किया है हो सकता है कॉलबैक भी वापस लुढ़का?
सं
किसी भी कॉलबैक या सत्यापन कर पर एक त्रुटि की परवरिश करता है यह इस तरह है कि सभी में कोई परिवर्तन यह है कि क्रिया कार्रवाई के लिए डेटाबेस में होता है?
सं
आप या तो आप स्पष्ट रूप से अपने नियंत्रक में लेनदेन बना सकते हैं इस व्यवहार की इच्छा है (दूसरे उपयोगकर्ताओं द्वारा प्रदान उदाहरण देखें), या एक around_filter
का उपयोग अपने सभी शोकहारा कार्यों के व्यवहार संलग्न करने के लिए।
कुछ विधियां (बनाएं, नष्ट करें) तुरंत डेटाबेस पर जाएं। लेन-देन के रूप में निम्नानुसार ActiveRecord से व्युत्पन्न वर्ग पर लेन-देन विधि का उपयोग कर पाए जाते हैं: (। इस उदाहरण एकाधिक डेटाबेस के लिए है एक एकल डाटाबेस के लिए, आप केवल एक ही लेन-देन की जरूरत है।)
Student.transaction do
Course.transaction do
course.enroll(student)
student.units += course.units
end
end
फिर आप रोलबैक कर सकते हैं इन लेनदेन पर, लेनदेन के भीतर फेंक दिया अपवाद रोलबैक के बाद प्रचारित किया जाता है।
यह लेनदेन वाले डेटाबेस पर निर्भर करता है।
एनबी: लेनदेन में लपेटा और नष्ट कर दिया गया है।
डिफ़ॉल्ट रूप से लेनदेन के अंदर कोई डेटाबेस कोड लिखा नहीं गया है, आपको कोड में ऐसा करने के लिए कहने की आवश्यकता है।
def create
Model.transaction do
Model.create!(params[:model])
Model.association.create!(params[:association])
end
rescue ActiveRecord::RecordNotSaved, ActiveRecord::RecordInvalid
flash[:notice] = "That record could not be saved."
render :action => "new"
end
#create का उपयोग करना! विधियां रिकॉर्ड को सहेजने का प्रयास करेंगी और यदि वे असफल हों तो वे एक अपवाद उठाएंगे जो लेनदेन ब्लॉक के अंदर पहले से किए गए किसी भी कोड को रोलबैक करेगा।
यदि आप कार्रवाई को नहीं बचाते हैं तो आपको एक सार्वजनिक स्थिति में 405.html पर पुनर्निर्देशित किया जाएगा यदि कोई मौजूद है।
- 1. लेनदेन का उपयोग कैसे करें (लेनदेन शुरू करें, लेनदेन करें)?
- 2. SqlServer.Management.SMO। लेनदेन शुरू करते समय सर्वर त्रुटि
- 3. डीएओ पैटर्न - लेनदेन कहां फिट होते हैं?
- 4. लेनदेन
- 5. क्या पोस्टग्रेएसक्यूएल लेनदेन लेनदेन कर रहे हैं?
- 6. पीडीओ: लेनदेन वापस रोल नहीं करते हैं?
- 7. लेनदेन के भीतर MySQL लेनदेन
- 8. लेनदेन के भीतर लेनदेन
- 9. त्रुटि: असामान्य लेनदेन हैं
- 10. एक लेनदेन
- 11. लेनदेन
- 12. लेनदेन का प्रचार व्यवहार
- 13. ट्रिगर से रोलबैक लेनदेन
- 14. डीबी सत्र का उपयोग करते समय एसक्यूएल कीमिया में लेनदेन का उपयोग कैसे करें?
- 15. परिवर्तनीय नाम _ माध्य से शुरू होते हैं?
- 16. "ऑपरेशन करने के लिए अपर्याप्त संसाधन।" एमएसएमक्यू जब लेनदेन में कई संदेश होते हैं
- 17. वसंत जेडीबीसी का उपयोग कर आसान लेनदेन?
- 18. वितरित लेनदेन कैसे काम करते हैं (उदाहरण के लिए एमएसडीटीसी)?
- 19. अपाचे लेनदेन: फ़ाइल को लेनदेन से लिखें - संसाधन का उपयोग कैसे करें
- 20. लेनदेन - डेडलॉक्स से कैसे बचें?
- 21. लपेटा लेनदेन
- 22. डेटाबेस विक्रेता लेनदेन को कैसे कार्यान्वित करते हैं?
- 23. सिस्टम का व्यावहारिक उपयोग क्या है। लेनदेन?
- 24. Nullpointer लेनदेन
- 25. लेनदेन MySQL
- 26. PGError: त्रुटि: वर्तमान लेनदेन
- 27. जेएमएस लेनदेन
- 28. कोड बनाम डेटाबेस-नियंत्रित लेनदेन से एसक्यूएल क्लाइंट लेनदेन
- 29. नेस्टेड लेनदेन का उद्देश्य
- 30. लेनदेनस्कोप: वितरित लेनदेन से बचें
आपको इस तरह के लेनदेन घोंसले की आवश्यकता नहीं है। .transaction के लिए कोई भी कॉल ActiveRecord :: बेस पर पास हो जाती है। आप सचमुच केवल ActiveRecord :: Base.transaction को दो बार –
पर कॉल कर रहे हैं यह रेल दस्तावेज से एक उदाहरण है। –
आह! मुझे लगता है कि यह एकाधिक डेटाबेस के लिए आवश्यक है। अपडेट किया गया। –