Ruby on Rails
ActiveRecord लेनदेन
खोज…
परिचय
ActiveRecord लेन-देन सुरक्षात्मक ब्लॉक हैं जहां सक्रिय रिकॉर्ड प्रश्नों का अनुक्रम केवल स्थायी है अगर वे सभी एक परमाणु कार्रवाई के रूप में सफल हो सकते हैं।
सक्रिय रिकॉर्ड लेनदेन के साथ शुरू करना
सक्रिय रिकॉर्ड लेनदेन मॉडल वर्गों के साथ-साथ मॉडल उदाहरणों पर भी लागू किया जा सकता है, लेन-देन ब्लॉक के भीतर की वस्तुओं को सभी एक ही वर्ग के उदाहरण नहीं होने चाहिए। ऐसा इसलिए है क्योंकि लेनदेन प्रति-डेटाबेस कनेक्शन हैं, प्रति मॉडल नहीं। उदाहरण के लिए:
User.transaction do
account.save!
profile.save!
print "All saves success, returning 1"
return 1
end
rescue_from ActiveRecord::RecordInvalid do |exception|
print "Exception thrown, transaction rolledback"
render_error "failure", exception.record.errors.full_messages.to_sentence
end
एक धमाके के साथ बचत का उपयोग करना सुनिश्चित करता है कि अपवाद को फेंकने पर लेनदेन स्वचालित रूप से वापस हो जाएगा और रोलबैक के बाद, नियंत्रण अपवाद के लिए बचाव खंड में जाता है। सुनिश्चित करें कि आप बचाओ से फेंक दिए गए अपवादों को बचाते हैं! लेन-देन ब्लॉक में।
यदि आप save का उपयोग नहीं करना चाहते हैं!, तो आप मैन्युअल रूप से raise ActiveRecord::Rollback
बढ़ा सकते हैं raise ActiveRecord::Rollback
जब बचत विफल हो जाती है तो raise ActiveRecord::Rollback
। आपको इस अपवाद को संभालने की आवश्यकता नहीं है। यह तब लेन-देन को रोलबैक करेगा और ट्रांजेक्शन ब्लॉक के बाद अगले स्टेटमेंट पर नियंत्रण रखेगा।
User.transaction do
if account.save && profile.save
print "All saves success, returning 1"
return 1
else
raise ActiveRecord::Rollback
end
end
print "Transaction Rolled Back"