मैं थोड़ी देर के खर्च एक बग मुझे इस कोड का उपयोग करने से रोकने को देख। मेरा डेटाबेस हर बार रोलिंग कर रहा था जब मैंने एक विशेषता को अवरुद्ध करने की कोशिश की और सहेजने से पहले false
पर बदल दिया।
मैं अपना जवाब यहां योगदान दे रहा हूं क्योंकि यह धागा इस कार्य को पूरा करने के लिए पहला Google परिणाम था, लेकिन पूरे लौटने में false
समस्या शामिल नहीं थी।
यदि आपकी कोई भी कॉलबैक false
वापस लौटा दी जाएगी तो सब कुछ डीबी में वापस घुमाया जाएगा।
मैं डेटाबेस में @offer.accepted = false
में स्वीकार नहीं किए जाने के लिए एक ऑफ़र सेट करने का प्रयास कर रहा था। समस्या यह थी कि इस लाइन ने पूरी प्रक्रिया को झूठी वापसी और पूरी प्रक्रिया को रोलबैक करने का कारण बताया।
मैं एक अंतर्निहित वापसी true
बाद में
कोड है कि काम में घालना द्वारा यह तय:
before_save {|offer| offer.accepted = false; true}
Takeaway: अपने कॉलबैक false
वापस नहीं लौट सकते हैं यदि आप उन्हें सफल होना चाहते हैं।
स्रोत: rails 3 : Do i need to give return true in a before_save callback for an object.save to work?
स्रोत
2014-05-03 02:03:48
ActiveRecord कॉलबैक पर अधिक: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html – Zargony
यदि आपके पास ऐसे हुक हैं और/या गुणों पर किए गए कई संचालन हैं तो आप उनके लिए विधियां भी बना सकते हैं और दे सकते हैं भेड़ के बच्चे के बजाय विधि नाम। आप [विशेषता-फ़िल्टर] (http://rubydoc.info/gems/attribute-filters/1.2.2/) मणि भी देख सकते हैं जो उस प्रक्रिया को सरल बनाता है यदि आपके पास कई कॉलबैक हैं जो विशेषताओं को बदलने के लिए डिज़ाइन किए गए हैं। – siefca