मैं मौजूदा मॉडल में कुछ विशेषताओं को जोड़ना चाहता हूं जिन्हें जारी रखने की आवश्यकता नहीं है, या यहां तक कि डेटाबेस कॉलम में मैप किया गया है। क्या ऐसी कोई चीज़ निर्दिष्ट करने का कोई समाधान है?गैर लगातार सक्रिय रिकॉर्ड मॉडल
उत्तर
बेशक अच्छी पुरानी रूबी के attr_accessor
का उपयोग करें। अपने मॉडल में: लेकिन विशेषता दृढ़ रहना करने के बाद to_json बुलाया गया था था
object.foo = 'baz'
object.foo #=> 'baz'
ऑब्जेक्ट के जेएसओएन प्रारूप में यह विशेषता कैसे प्राप्त करें? कहें, मैं चाहता हूं कि यह विशेषता क्लाइंट साइड पर ऑब्जेक्ट के JSON में दिखाई दे। क्या मैं इसे प्राप्त करूंगा? अभी तक मुझे यह नहीं मिल रहा है, भले ही मैंने इसे अपनी निर्माण विधि में सेट किया हो। यह कैसे करना है? – Yash
और रेल 4 में? – monteirobrena
@monteirobrena एक ही चीज़ – apneadiving
मैं एक ही समस्या हो रही थी मैं मॉडल bootstrap करने की जरूरत है, तो:
attr_accessor :foo, :bar
आप ऐसा करने में सक्षम हो जाएगा । इसके लिए आपको एक अतिरिक्त चीज़ करने की ज़रूरत है।
attr_accessor :foo
तो फिर तुम गुण आप चाहते हैं निर्दिष्ट कर सकते हैं:
रूप apneadiving ने कहा, सबसे आसान तरीका शुरू करने के लिए अपने मॉडल के लिए जाने के लिए और जोड़ना है। लेकिन विशेषता छड़ी बनाने के लिए आपको गुण विधि को बदलने की आवश्यकता है।
def attributes
super.merge('foo' => self.foo)
end
मेरे मामले में मैं एक बाईं उपयोग करना चाहता था कस्टम विशेषता को पॉप्युलेट करने में शामिल होने: अपने मॉडल फ़ाइल में इस विधि जोड़ें। यह काम करता है अगर मैं कुछ भी नहीं जोड़ता लेकिन मैं भी एक नई वस्तु पर विशेषता सेट करने में सक्षम होना चाहता हूं और निश्चित रूप से यह अस्तित्व में नहीं है। यदि मैं attr_accessor
जोड़ता हूं तो यह select
के बाद हमेशा nil
लौटाता है। यहां नई दृष्टिकोण पर सेट करने और बाएं जुड़ने से पुनर्प्राप्त करने के लिए उन कार्यों के साथ समाप्त किया गया दृष्टिकोण है।
after_initialize do
self.foo = nil unless @attributes.key?("foo")
end
def foo
@attributes["foo"]
end
def foo=(value)
@attributes["foo"] = value
end
रेल 4.2 में अब और काम नहीं करता है। '@ विशेषताएँ 'अब एक' ActiveRecord :: विशेषता SET' है जो' [] 'का समर्थन करता है लेकिन' [] = 'नहीं। – davogones
मामले में किसी को भी सोच रहा है कि कैसे को देखने के लिए इस प्रस्तुत करने के लिए है, तो जैसे, विधि प्रस्तुत करना के लिए विधि तर्क का उपयोग करें:
render json: {results: results}, methods: [:my_attribute]
कृपया ध्यान रखें कि यह तभी काम करता है आप attr_accessor सेट आपके मॉडल पर और कंट्रोलर एक्शन में विशेषता सेट करें, क्योंकि चयनित उत्तर समझाया गया है।
- 1. रेल फॉर्म_टैग फॉर्म लेखन - गैर-सक्रिय रिकॉर्ड मॉडल
- 2. सक्रिय रिकॉर्ड
- 3. लगातार रिकॉर्ड
- 4. वाईआई - सक्रिय रिकॉर्ड
- 5. कोडिग्निटर - सक्रिय रिकॉर्ड
- 6. रेल रिकॉर्ड एक्सएमएल सक्रिय रिकॉर्ड ऑब्जेक्ट
- 7. रेल में attr_accessible सक्रिय रिकॉर्ड
- 8. गतिशील रूप से नए सक्रिय रिकॉर्ड मॉडल और डेटाबेस टेबल
- 9. सक्रिय रिकॉर्ड मॉडल सत्यापन का अनुवाद कैसे करें
- 10. गतिशील सक्रिय रिकॉर्ड
- 11. सक्रिय रिकॉर्ड क्रम
- 12. वाईआई - सक्रिय रिकॉर्ड
- 13. एसक्यूएल करें शीर्ष लगातार रिकॉर्ड
- 14. सक्रिय रिकॉर्ड has_many: निकालें एक जुड़े रिकॉर्ड
- 15. मान्य गैर मॉडल क्षेत्र
- 16. रेल सक्रिय रिकॉर्ड अनुवाद: ऑटो पूंजीकरण/डाउनकेस?
- 17. लाखों गैर अनुक्रमिक रिकॉर्ड
- 18. रेल सक्रिय रिकॉर्ड उदाहरण चर
- 19. ओआरएम और सक्रिय रिकॉर्ड पैटर्न?
- 20. क्या डेटा मैपर सक्रिय रिकॉर्ड
- 21. कोडइग्निटर के सक्रिय रिकॉर्ड फ़ंक्शंस
- 22. रेल सक्रिय एक्टिव रिकॉर्ड समूह
- 23. Codeigniter - सक्रिय रिकॉर्ड - एसक्यूएल - जटिल
- 24. कोडिनेटर सक्रिय रिकॉर्ड 'where_or' grouping
- 25. Codeigniter सक्रिय रिकॉर्ड अद्यतन बयान
- 26. कोडइग्निटर सक्रिय रिकॉर्ड बराबर नहीं
- 27. कोडनिर्देशक सक्रिय रिकॉर्ड कहां, या_where?
- 28. जोड़ने गैर लगातार चर nsmangedobject को
- 29. रूबी वस्तु # आईडी चेतावनी और सक्रिय रिकॉर्ड
- 30. क्यूटी त्रुटि "लगातार मॉडल इंडेक्स दूषित" क्यों?
संभावित डुप्लिकेट [सक्रिय सक्रिय ऑर्डर करने के लिए अतिरिक्त रन-टाइम अटारी जोड़ना] (http://stackoverflow.com/questions/7584592/adding-extra-run-time-attribs-to-an-activerecord-object) – mlt