बाद में इसे देखने वाले किसी भी व्यक्ति के लिए, क्योंकि यह वर्तमान में (अगस्त 2017) गूगल में सबसे ऊपर है: यह ध्यान देने योग्य है, कि इस व्यवहार को रेल 5.2 में बदल दिया जाएगा , और इसमें रीले 5.1 के रूप में सक्रियकरण चेतावनी है, जैसे कि ActiveModel - डर्टी थोड़ा बदल गया है ।
मैं क्या बदलूं?
यदि आप -allallbacks attribute_changed?में विधि का उपयोग कर रहे हैं after_*, तो आपको एक चेतावनी दिखाई देगी जैसे:
समीक्षा चेतावनी: attribute_changed?कॉलबैक के बाद के अंदर का व्यवहार रेल के अगले संस्करण में बदल जाएगा। नया रिटर्न वैल्यू वापस आने के बाद विधि को कॉल करने के व्यवहार को प्रतिबिंबित करेगा save(जैसे कि अब जो लौटाता है उसके विपरीत)। वर्तमान व्यवहार को बनाए रखने के लिए, saved_change_to_attribute?इसके बजाय का उपयोग करें । (some_callback से / PATH_TO/app/models/user.rb:15 पर कॉल किया गया)
जैसा कि यह उल्लेख करता है, आप फ़ंक्शन को बदलकर इसे आसानी से ठीक कर सकते हैं saved_change_to_attribute?। तो उदाहरण के लिए, name_changed?बन जाता है saved_change_to_name?।
इसी तरह, यदि आप attribute_changeपहले-बाद के मूल्यों को प्राप्त करने के लिए उपयोग कर रहे हैं, तो यह बदल जाता है और निम्नलिखित फेंकता है:
समीक्षा चेतावनी: attribute_changeकॉलबैक के बाद के अंदर का व्यवहार रेल के अगले संस्करण में बदल जाएगा। नया रिटर्न वैल्यू रिटर्न के बाद विधि को कॉल करने के व्यवहार को प्रतिबिंबित करेगा save(उदाहरण के लिए जो अब लौटता है उसके विपरीत)। वर्तमान व्यवहार को बनाए रखने के लिए, saved_change_to_attributeइसके बजाय का उपयोग करें । (some_callback से /PATH_TO/app/models/user.rb:20 पर कॉल किया गया)
फिर, जैसा कि यह उल्लेख करता है, विधि नाम बदलकर saved_change_to_attributeकिस पर लौटती है ["old", "new"]। या उपयोग saved_changes, जो सभी परिवर्तन लौटाता है, और इन्हें इस रूप में एक्सेस किया जा सकता है saved_changes['attribute']।