जब आप रेल मॉडल में attr_reader
/attr_writer
/attr_accessor
का उपयोग करते हैं?रेल में attr_accessor का उपयोग
उत्तर
attr_accessor उन मानों के लिए उपयोग किया जा सकता है जिन्हें आप सीधे डेटाबेस में स्टोर नहीं करना चाहते हैं और यह केवल वस्तु के जीवन (जैसे पासवर्ड) के लिए मौजूद होगा। , Terms_of_service:
def instance_value
"my value"
end
कभी नहीं, जब तक कि आपके पास इसकी विशिष्ट आवश्यकता न हो। स्वचालित डेटाबेस-समर्थित एक्सेसर्स आपके लिए बनाए जाते हैं, इसलिए आपको चिंता करने की आवश्यकता नहीं है।
कोई भी attr_accessor
जो आप बनाते हैं, वह रेल ऑब्जेक्ट पर प्रासंगिक @attr
बदल देगा, लेकिन ऑब्जेक्ट नष्ट होने पर यह खो जाएगा, जब तक कि आप इसे डेटाबेस में वापस नहीं ले जाते। कभी-कभी आप यह व्यवहार चाहते हैं, लेकिन रेल ऐप में यह असामान्य है।
अब रूबी में, यह एक अलग कहानी है, और आप इन्हें अक्सर उपयोग करते हैं। लेकिन अगर आपको रेल की जरूरत है तो विशेष रूप से शुरुआत में मुझे आश्चर्य होगा।
सही - धन्यवाद। (मैं प्लस आप वोट चाहते हैं, लेकिन मैं तो बस यहाँ पर गया और मैंने 15pts पहले की जरूरत है लगता है ... यही कारण है कि मैकेनिक नए उपयोगकर्ताओं के लिए अमित्र लगता है।) – Ethan
नोट: रेल के रूप में 3.x 'attr_accessible' आवश्यकता है (डिफ़ॉल्ट रूप से) प्रत्येक मॉडल के लिए जिनके गुण आप लिखने की अनुमति देना चाहते हैं (उदाहरण के लिए एक फॉर्म POST के माध्यम से)। पिछली संगतता के लिए इसे 'application.rb' में बदला जा सकता है, लेकिन सुरक्षा उपायों के रूप में जोड़ा गया था ताकि आपको उन उपयोगकर्ताओं द्वारा स्पष्ट रूप से श्वेतसूची की आवश्यकता हो जो _should_ उपयोगकर्ताओं द्वारा अपडेट करने योग्य हो। एक अतिरिक्त लाभ के रूप में, एक मॉडल की विशेषताओं (db कॉलम) के सभी मॉडल में वहीं दिखाई दे रहे हैं, तो आप क्या बिल्ली है कि स्तंभ :-) –
आप इसे उपयोग कर रहे हैं terms_of_service की स्वीकृति को मान्य करने के लिए, आप वास्तव में पुष्टि के उपयोग पर विचार करना चाहिए:
attr_reader कुछ इस तरह कर रही करने के लिए कई विकल्प के रूप में इस्तेमाल किया जा सकता स्वीकृति => सच है। यह एक वर्चुअल विशेषता बनाएगा और यह अधिक संक्षिप्त है।
http://guides.rubyonrails.org/active_record_validations.html#acceptance।
एक उदाहरण है कि एक धारावाहिक कॉलम में कई विकल्प संग्रहीत किए जाएं। यदि आप इन विकल्पों में से किसी एक के लिए टेक्स्ट फ़ील्ड रखने का प्रयास करते हैं तो फॉर्म बिल्डर शिकायत करेगा। आप इसे नकली करने के लिए attr_accessor का उपयोग कर सकते हैं, और फिर अद्यतन कार्रवाई में इसे क्रमबद्ध कॉलम में सहेज सकते हैं।
रेल मॉडल केवल रूबी वर्ग हैं जो ActiveRecord::Base
से प्राप्त होते हैं। ActiveRecord रूबी क्लास की तालिका को संदर्भित करने वाले कॉलम नामों के लिए गेटर्स और सेटर्स को परिभाषित करने के लिए attr_accessor
एस को नियोजित करता है। यह ध्यान रखना महत्वपूर्ण है कि यह केवल दृढ़ता के लिए है; मॉडल अभी भी रूबी कक्षाएं हैं।
def foo=(var)
@foo = var
end
:
def foo
@foo
end
attr_writer :foo
निम्नलिखित के लिए एक शॉर्टकट है:
def foo=(var)
@foo = var
end
def foo
@foo
end
attr_reader :foo
बस निम्नलिखित के लिए एक शॉर्टकट है:
attr_accessor :foo
बस निम्नलिखित के लिए एक शॉर्टकट है
attr_accessor
एक शोर है गेटर और सेटर के लिए tcut जबकि attr_reader
गेटर और attr_writer
के लिए शॉर्टकट है सिर्फ सेटर के लिए एक शॉर्टकट है।
रेल में, ActiveRecord इन गेटर्स और सेटर्स का उपयोग डेटाबेस को मान पढ़ने और लिखने के सुविधाजनक तरीके से करता है। लेकिन, डेटाबेस सिर्फ दृढ़ता परत है। आपको attr_accessor
और attr_reader
का उपयोग करने के लिए स्वतंत्र होना चाहिए क्योंकि आप किसी अन्य रूबी क्लास को अपने व्यावसायिक तर्क को सही ढंग से लिखने के लिए करेंगे।जैसा कि आपको डेटाबेस में बने रहने के लिए अपनी वस्तुओं के गुणों को प्राप्त करने और सेट करने की आवश्यकता है, तदनुसार attr_
का उपयोग करें।
और जानकारी:
http://apidock.com/ruby/Module/attr_accessor
नामित किया गया था 'attr_reader याद करने की जरूरत नहीं है: foo' उत्पन्न करता है' foo' गेटर विधि, 'attr_writer: foo'' foo = 'सेटर विधि उत्पन्न करता है, 'attr_accessor: foo' दोनों' foo' और 'foo =' विधियों को उत्पन्न करता है। – Fatih
+1 फ़तिह। संपादन के लिए धन्यवाद। मैंने आपकी टिप्पणी को शामिल करने के लिए अपनी प्रतिक्रिया संपादित की है – brycemcd
- 1. attr_accessor?
- 2. attr_accessor
- 3. attr_accessor डिफ़ॉल्ट मान
- 4. attr_accessor accept_nested_attributes_for
- 5. attr_accessor परिभाषित चर का उपयोग नहीं कर सकता
- 6. रूबी के attr_accessor, attr_reader और attr_writer का उपयोग क्यों करें?
- 7. @instance_variable और attr_accessor
- 8. एटीआर बनाम attr_accessor
- 9. रेल में send_file का उपयोग
- 10. रेल में jquery का उपयोग
- 11. रेल में नेस्टेड फॉर्म - has_many संबंध में विशेषता का उपयोग
- 12. कैसे विशेषताओं attr_reader या attr_accessor
- 13. मैं प्रारंभ में अंदर attr_accessor का उपयोग क्यों नहीं कर सकता?
- 14. रेल में ActiveRecord का उपयोग कर
- 15. रेल अनुप्रयोग में syslog का उपयोग
- 16. रेल अनुप्रयोग में मॉड्यूल का उपयोग मॉडल
- 17. रेल संपत्तियों में तरल पदार्थ का उपयोग
- 18. रेल 3.0 में rsyslogd का उपयोग
- 19. रेल में संग्रहीत प्रक्रियाओं का उपयोग
- 20. रेल में एचटीएमएल का उपयोग फ्लैश संदेश
- 21. रेल में पैरामीटर का उपयोग कैसे करें?
- 22. का उपयोग || रेल में केस स्विच
- 23. रेल पर रूबी का उपयोग
- 24. Gemfile.lock रेल में उपयोग करें?
- 25. रेल में पीडीएफकिट में यूटीएफ -8 का उपयोग कैसे करें?
- 26. एक रेल मॉड्यूल में mattr_accessor क्या है?
- 27. रेल इंजन/बीज का उपयोग कैसे करें?
- 28. रेल सांत्वना - का उपयोग IMAGE_TAG विधि
- 29. रेल के साथ स्ट्रिप वेबहूक का उपयोग
- 30. डेटाटेबल्स के साथ रेल 3.1 का उपयोग
मुझे लगता है कि आप attr_accessor मतलब है? –
आह सही। धन्यवाद। – Ethan