मैं एक अच्छी रूबी कोडिंग शैली प्राप्त करने की कोशिश कर रहा हूं। एक ही नाम के साथ स्थानीय चर को गलती से कॉल करने से रोकने के लिए, मैं हमेशा self.
का उपयोग कर रहा हूं जहां उचित हो। एक त्रुटिself.xxx() का उपयोग करके एक निजी विधि xxx को किसी अन्य निजी विधि के भीतर कॉल करने के परिणामस्वरूप त्रुटि "निजी विधि 'xxx' कहा जाता है"
निजी विधि
sanitize_name
लेकिन जब self.
को दूर करने और सिर्फ sanitize_name
का उपयोग कर, यह काम करता है कहा जाता है में
class MyClass < ActiveRecord::Base
before_validation :sanitize_user_data
private
def sanitize_user_data
self.sanitize_name # with ".self" it's a problem, without it's not!
end
def sanitize_name
unless self.name.nil?
self.name.gsub!(/\s+/, ' ')
self.name.strip!
end
end
end
ऊपर कोड परिणाम: लेकिन अब मैं इस पर ठोकर खाई। यही कारण है कि?
स्पष्टीकरण के लिए धन्यवाद। मैं इसे ध्यान में रखूंगा, लेकिन मुझे लगता है कि वास्तव में इसे समझना है, मुझे रूबी के आंतरिक में गहराई से खोदना होगा, है ना? –
@ जोशुआमुइम जरूरी नहीं है, यह एक निजी रिसीवर को प्रतिबंधित करके निजी तरीके से काम करने का तरीका है, कहीं भी नहीं कहा जा सकता है कि निहित रिसीवर एक ही 'आत्म' नहीं है, यह आपके पास कुछ हद तक दुर्भाग्यपूर्ण दुष्प्रभाव है जो आपको रोकने से रोकता है निहित रिसीवर के रूप में एक ही स्पष्ट रिसीवर के साथ एक निजी विधि बुलाओ। –
ठीक है, यह दिलचस्प है। व्याख्या करने के लिए बहुत बहुत धन्यवाद। :) –