मेरे पास एक ActiveRecord मॉडल ऑब्जेक्ट Foo
है; यह एक मानक डेटाबेस पंक्ति का प्रतिनिधित्व करता है।एक उदाहरण पर ActiveRecord save() को रोकना
मैं इस ऑब्जेक्ट के उदाहरणों के संशोधित संस्करणों को प्रदर्शित करने में सक्षम होना चाहता हूं। मैं कक्षा को फिर से उपयोग करना चाहता हूं, क्योंकि इसमें पहले से ही सभी हुक & पहलुओं की आवश्यकता होगी। (उदाहरण के लिए: मेरे पास पहले से एक ऐसा दृश्य है जो उचित विशेषताओं को प्रदर्शित करता है)। असल में मैं मॉडल उदाहरण क्लोन करना चाहता हूं, इसकी कुछ गुणों को संशोधित करना चाहता हूं, और उसे कॉलर (देखें, परीक्षण, आदि) पर वापस फ़ीड करना चाहता हूं।
मैं नहीं चाहता हूं कि ये विशेषता संशोधन डेटाबेस में वापस आ जाए। हालांकि, मैं क्लोन संस्करण में id
विशेषता शामिल करना चाहता हूं, क्योंकि यह मार्ग-सहायकों से निपटने में बहुत आसान बनाता है। इस प्रकार, मैं ActiveRecord::Base.clone()
पर कॉल करने की योजना बना रहा हूं, मैन्युअल रूप से क्लोन आवृत्ति की आईडी सेट कर रहा हूं, और उसके बाद उचित विशेषता को नए उदाहरण में बदलना चाहता हूं। यह मुझे चिंतित है हालांकि; संशोधित उदाहरण पर एक save()
और मेरा मूल डेटा क्लॉब्ड हो जाएगा।
तो, मैं नया उदाहरण लॉक करना चाहता हूं ताकि इससे कुछ और नुकसान न आए। मैं पहले से ही freeze()
पर कॉल करने की योजना बना रहा हूं (इस समझ पर कि यह ऑब्जेक्ट में और संशोधन को रोकता है, हालांकि documentation isn't terribly clear)। हालांकि, मुझे बचाने() को रोकने के लिए कोई स्पष्ट तरीका नहीं दिख रहा है।
इसे प्राप्त करने का सबसे अच्छा तरीका क्या होगा?
बढ़ा देंगे कर सकते हैं मानक ActiveRecord वस्तु के साथ चारों ओर है कि काफी गड़बड़ की जरूरत है, वहाँ शायद समस्या आ का एक बेहतर तरीका है। – Matchu
मैं निश्चित रूप से विकल्पों के लिए खुला हूं –