क्या रेलवे ActiveSupport::Concern
मॉड्यूल के अंदर निजी विधियां बनाने के लिए यह समझ में आता है?
ध्यान में रखते हुए कि चिंताएं स्मार्ट मॉड्यूल हैं जो अंततः अन्य कक्षाओं में शामिल की जाएंगी - हाँ, यह करता है। यह सिर्फ एक पोर्टेबल कोड है, निकालने योग्य व्यवहार है और मैं इसे अपने नियंत्रक (या मॉडल इत्यादि) के हिस्से के रूप में मानना चाहता हूं क्योंकि मैं इसे लिख रहा हूं। तो मूल रूप से आप सामान्य रूप से विधियों private
या protected
घोषित करते हैं।
हो सकता है कि 2013 के बाद से the post you linked अद्यतन किया गया है, लेकिन DHH वहाँ उदाहरण में से एक में वास्तव में करता है:
module Dropboxed
extend ActiveSupport::Concern
included do
before_create :generate_dropbox_key
end
def rekey_dropbox
generate_dropbox_key
save!
end
private # <- Let's list some privates
def generate_dropbox_key
self.dropbox_key = SignalId::Token.unique(24) do |key|
self.class.find_by_dropbox_key(key)
end
end
end
private
कक्षा तरीकों के रूप में, मैं @Hugo से सहमत है और उन्हें अपने आप इस्तेमाल कभी नहीं किया है, लेकिन आप इसे इस तरह प्राप्त कर सकते हैं:
module Dropboxed
extend ActiveSupport::Concern
included do
private_class_method :method_name
end
module ClassMethods
def method_name
end
end
end
यह विधि छिपी नहीं जाएगी, आपको इसके लिए अभी भी "निजी" कीवर्ड का उपयोग करने की आवश्यकता है। –
ऐसा लगता है कि जब चिंता की विधि से बुलाया जाता है, तो 'self.class.method_name' निजी नहीं है क्योंकि निजी। – ybart