मेरे पास Blockable
मॉड्यूल है जिसमें कुछ अन्य ActiveRecord
कक्षाओं में शामिल होने के लिए एसोसिएशन और विधियां शामिल हैं।रेल: मैं अपने एआर मॉडल में शामिल होने वाले मॉड्यूल में एक एसोसिएशन एक्सटेंशन कैसे परिभाषित करूं?
प्रासंगिक कोड:
module Blockable
def self.included(base)
base.has_many :blocks
end
end
मैं एक संघ एक्सटेंशन जोड़ना चाहते हैं। सामान्य वाक्य रचना (यानी जब मैं एक मॉड्यूल में संघ को परिभाषित नहीं कर रहा हूँ) इस तरह है: जब मॉड्यूल जो ए.आर. मॉडल में शामिल है में प्रयोग किया जाता
# definition in Model < ActiveRecord::Base
has_many :blocks do
def method_name
... code ...
end
end
# usage
Model.first.blocks.method_name
इस वाक्य रचना काम नहीं करता। मुझे undefined method 'method_name' for #<ActiveRecord::Relation:0xa16b714>
मिलता है।
कोई भी विचार मुझे अन्य एआर कक्षाओं में शामिल करने के लिए मॉड्यूल में एक एसोसिएशन एक्सटेंशन को परिभाषित करने के बारे में कैसे जाना चाहिए?
आपका मॉड्यूल ठीक दिखता है, ऐसा लगता है कि आप इसे गलत तरीके से कॉल कर रहे हैं। 'Model.blocks' काम नहीं करना चाहिए। आप इसे किसी ऑब्जेक्ट पर कॉल कर रहे हैं और उस ऑब्जेक्ट का उदाहरण नहीं। 'Model.first.blocks.method_name' आज़माएं। –
क्षमा करें, मेरे द्वारा असफल उदाहरण। मैं इसे एक उदाहरण पर कॉल करने की कोशिश कर रहा हूं - मैंने इसे ठीक करने के लिए अपना प्रश्न अपडेट कर दिया है। – nfm