class Post < ActiveRecord::Base
def self.search(q)
# Class Level Method
# search from DB
end
def search2(qq)
# Instance Level Method
# search from DB
end
end
कक्षा तरीकों वर्ग (पोस्ट जैसे) पर काम के रूप में ही है, उदाहरण के तरीकों कि वर्ग के उदाहरण (जैसे पोस्ट पर काम करता है। नया)
कुछ class << self; code; end;
तरह से जैसे लोगों की वजह से यह एक अच्छा ब्लॉक में और एक ही स्थान पर सभी वर्ग के स्तर तरीकों रहता है।
दूसरों self.
साथ प्रत्येक विधि उपसर्ग के लिए स्पष्ट रूप से पता चला है कि एक वर्ग विधि नहीं एक उदाहरण विधि है पसंद है। यह शैली का विषय है और आप कैसे कोड करते हैं। यदि आप class << self
जैसे ब्लॉक में सभी क्लास विधियां डालते हैं, और यह ब्लॉक काफी लंबा है, तो class << self
लाइन आपके संपादक दृश्य से बाहर हो सकती है जिससे यह जानना मुश्किल हो जाता है कि आप क्लास इंस्टेंस ब्लॉक में हैं।
दूसरी ओर, प्रत्येक विधि को self.
के साथ उपसर्ग करना और उदाहरण विधियों वाले लोगों को इंटरमीक्स करना भी एक बुरा विचार है, आप अपने कोड को पढ़ने के दौरान सभी कक्षा विधियों को कैसे जानते हैं।
एक मुहावरा है जो आप अपने खुद के कोड बेस के लिए पसंद करते हैं, लेकिन अगर आप एक खुला स्रोत परियोजना पर काम या आप किसी और की कोड पर सहयोग करने, नियम स्वरूपण उनके कोड का उपयोग उठाओ।
स्रोत
2011-01-10 10:05:10
खोज 2 एक बहुत ही खराब विधि नाम है। –
और यह भी रूबी में का डुप्लिकेट [रेल वर्ग << स्वयं] (http://stackoverflow.com/questions/2567956/rails-class-self) और [ 'self.method_name' के बीच अंतर और 'वर्ग << स्वयं' ] (http: // stackoverflow।कॉम/प्रश्न/2025569/अंतर-बीच-स्व-विधि-नाम-और-वर्ग-स्व-इन-रूबी) और [क्या कोई कक्षा को समझा सकता है << स्वयं को मुझे?] (http://stackoverflow.com/questions/4149700/कर सकते हैं-कोई-कृपया-समझाने-वर्ग-आत्म-टू-मुझे)। प्रश्न पोस्ट करने से पहले कृपया खोजें। – Phrogz