मैं माफी चाहता मुझे लगता है कि ऐसा करने के लिए किसी भी प्लगइन का पता नहीं है हूँ इंटरफ़ेस में वे सिर्फ "नई क्षेत्र"> का चयन करेंगे। लेकिन मेरे पास एक कार्यान्वयन सुझाव है।
विचार "डायनामिकफ़िल्फ़" मॉडल जोड़ने का है जो संपर्क मॉडल के साथ है_मैनी संबंध होगा। जब आपके पास संपर्क मॉडल में कोई विधि अनुपलब्ध है, तो आप जांचते हैं कि यदि ऐसा है तो इसे पुनर्प्राप्त करने के लिए कोई गतिशील फ़ील्ड है या नहीं।
class DynamicField < ActiveRecord::Base
belongs_to :contact
end
class Contact < ActiveRecord::Base
has_many :dynamic_fields
def method_missing(sym, *args, &block)
begin
super
rescue
field = dynamic_fields.find_by_name(sym)
end
raise ActiveRecord::NoMethodError if field.nil?
field.value
end
end
आप गुण = विधि के साथ आभासी विशेषताएं जोड़ने का तरीका (एक "=" की उपस्थिति का पता लगाने और केवल मूल्य प्राप्त करने की बजाय एक अद्यतन कर रही है) चाहते हैं तो आप एक regex जोड़ने की आवश्यकता होगी। लेकिन आपके पास पहले से ही विचार है।
जब विधि मौजूद नहीं है, तो हम गतिशील फ़ील्ड की जांच करते हैं यदि एक ही नाम वाला कोई है। यदि कोई नहीं है (field.nil?), हम NoMethodError बढ़ाते हैं। अन्यथा, हम इसे वापस कर देते हैं।
तो आप निम्नलिखित के साथ अपने सभी क्षेत्रों की एक सूची प्राप्त कर सकते हैं:
Contact.find(:first).dynamic_fields
और निम्नलिखित के साथ एक विशिष्ट एक पुनः प्राप्त:
Contact.find(:first).my_dynamic_field
स्रोत
2009-10-19 08:17:29