में किसी ऑब्जेक्ट की कक्षा को बदलना मान लें कि मेरे पास एक डेटाबेस तालिका में FireNinja < Ninja
ऑब्जेक्ट है, जो एकल तालिका विरासत का उपयोग करके संग्रहीत है। बाद में, मुझे एहसास हुआ कि वह वास्तव में WaterNinja < Ninja
है। उसे विभिन्न उप-वर्ग में बदलने का सबसे साफ तरीका क्या है? इससे भी बेहतर, मुझे एक नया WaterNinja
ऑब्जेक्ट बनाना अच्छा लगेगा और आईडी को संरक्षित करने वाले डीबी में पुराने FireNinja
को प्रतिस्थापित करें।ActiveRecord
संपादित मैं से नए WaterNinja
वस्तु बनाने के लिए कैसे पता अपने मौजूदा FireNinja
, और मैं भी मैं पुराने हट जाए और नया एक को बचा सकता है पता है। मैं क्या करना चाहता हूं मौजूदा आइटम की कक्षा उत्परिवर्तित करना है। चाहे मैं एक नई ऑब्जेक्ट बनाकर और कुछ ActiveRecord जादू को पंक्ति को प्रतिस्थापित करने के लिए करता हूं, या ऑब्जेक्ट के लिए कुछ प्रकार की पागल चीज कर रहा हूं, या यहां तक कि इसे हटाकर और उसी आईडी के साथ पुन: सम्मिलित करके प्रश्न का हिस्सा है।
ऐसा लगता है कि आप जवाब दे रहे हैं, "मैं सभी 'फायर निंजा' को 'वॉटरनिंज' में कैसे बदलूं?" जवाब अभी भी काम करता है हालांकि अगर मैं स्थिति को 'आईडी = myid' में बदलता हूं। हाँ, मैंने उस बारे में सोचा था।मुझे कुछ वॉटरनिंज-विशिष्ट फ़ील्ड सेटिंग करने के लिए अद्यतन के बाद वस्तु को खींचना होगा, लेकिन यह ठीक है। मैं कुछ थोड़ा क्लीनर की उम्मीद कर रहा था, हालांकि। –
मैं देखता हूं कि आपका क्या मतलब है। मैं ऐसा करने की अनुशंसा नहीं करता, लेकिन यह चाल करेगा: 'ninja_id = @ ninja.id; @ ninja.update_attribute (: प्रकार, 'वाटरनिंज'); @ninja = WaterNinja.find (ninja_id) ' –
मैंने वर्णित विधि को दिखाने के लिए संपादित किया। –