मैं रूबी के लिए वहाँ बाहर महान प्लगइन्स के सभी तरह कुछ को लागू करने की है, ताकि आप यह कर सकते हैं आशा करती हूं कि:रुबी में शामिल मॉड्यूल के लिए पास पास?
acts_as_commentable
has_attached_file :avatar
लेकिन मैं एक बाधा है:
कि सहायक विधि कर सकते हैं केवल एक मॉड्यूल शामिल करें; यह किसी भी चर या विधियों को परिभाषित नहीं कर सकता है।
इस का कारण है, क्योंकि, मैं विकल्पों type
की तरह कुछ को परिभाषित करने के हैश, और उस में से एक में परिवर्तित किया जा सकता 20 विभिन्न 'workhorse' मॉड्यूल है, जो सभी मैं एक लाइन में योग कर सकता है कहना चाहता हूँ
def dynamic_method(options = {})
include ("My::Helpers::#{options[:type].to_s.camelize}").constantize(options)
end
तब उन 'workhorses' विकल्प संभाल होता है, की तरह काम करने:
has_many "#{options[:something]}"
यहाँ संरचना कैसा दिखता है, और मैं सोच रहा हूँ अगर तुम नहीं जानते कि इस तरह वह पहेली में भाग लापता:
# 1 - The workhorse, encapsuling all dynamic variables
module My::Module
def self.included(base)
base.extend ClassMethods
base.class_eval do
include InstanceMethods
end
end
module InstanceMethods
self.instance_eval %Q?
def #{options[:my_method]}
"world!"
end
?
end
module ClassMethods
end
end
# 2 - all this does is define that helper method
module HelperModule
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def dynamic_method(options = {})
# don't know how to get options through!
include My::Module(options)
end
end
end
# 3 - send it to active_record
ActiveRecord::Base.send(:include, HelperModule)
# 4 - what it looks like
class TestClass < ActiveRecord::Base
dynamic_method :my_method => "hello"
end
puts TestClass.new.hello #=> "world!"
%Q?
कि मैं पूरी तरह से कैसे उपयोग करने के लिए यकीन नहीं है, लेकिन मैं मूल रूप से बस किसी भी तरह workhorse मॉड्यूल में है कि सहायक विधि से options
हैश पारित करने के लिए सक्षम होने के लिए इच्छुक हूँ । क्या यह संभव है? इस तरह, वर्कहोर मॉड्यूल सभी प्रकार की कार्यक्षमता को परिभाषित कर सकता है, लेकिन मैं रनटाइम पर जो कुछ भी चाहता था वैरिएबल का नाम दे सकता था।
क्या आप इस बारे में विस्तार से बता सकते हैं कि यह इस उदाहरण में कैसे मदद कर सकता है?यह आपके लिए स्पष्ट हो सकता है, लेकिन इस साइट पर अच्छे उत्तरों में इस प्रकार की जानकारी शामिल है। एक स्पष्टीकरण के बिना एक सूचक वास्तव में एक जवाब नहीं है .... – GreenAsJade
यह ruby वर्ग के लिए act_as DSL है। आप फ़ील्ड और विकल्पों को क्रिया (मॉड्यूल) में पास कर सकते हैं, उदाहरण के लिए act_as_searchable: शीर्षक, अनदेखा: सत्य –