मुझे एहसास है कि यह करने का सबसे बुद्धिमान तरीका नहीं है, लेकिन अब मेरी जिज्ञासा सक्रिय है और मैं उत्सुक हूं कि इसे करने के लिए कैसे करें।रेल मॉडल पर गतिशील तरीके
मेरे पास रेल परियोजना में एक मॉडल है। हम इसे डील कहते हैं। प्रति ActiveRecord और उन सभी अच्छी चीजें डेटाबेस में UPDATED_AT जैसे डेटाबेस में परिभाषित कॉलम हैं और वे डील पर विधियां बनती हैं: deal.updated_at => '04/19/1 9 66 3:15 पूर्वाह्न '
कहें कि मैं इसके बजाय विधियों को बनाना चाहता हूं मुझे पूरे दिनांक और समय की चीज़ के बजाय सप्ताह के दिन बताया। मुझे पता है वहाँ दिनांक समय वर्ग पर तरीके हैं तो मैं
deal.updated_at.day_of_week => 'Monday' (*)
है, लेकिन क्या कर सकते हैं अगर मैं सिर्फ
deal.updated_day => 'Monday'
मैं deal.rb
def update_day
self.updated_at.day_of_week
end
में लिख सकते हैं चाहता था समझ गया।
लेकिन क्या होगा अगर मैं है हमेशा को यह चाहते थे विधि किसी भी तारीख स्तंभ है कि मॉडल को जोड़ा गया है के लिए उपलब्ध?
मैंने वहां define_method देखा (कुछ यहाँ StackOverflow पर)। तो मैं समझता हूँ। लेकिन मैं ActiveRecord के जादू के ठीक बाद इसे कॉल करना चाहता हूं, है ना? तो अगर मेरे डील मॉडल ने update_at, बनाया_at, offer_at और lawuit_at किया था, तो मैं प्रत्येक के लिए मिलान विधियों को चाहता हूं। सबसे महत्वपूर्ण बात यह है कि यदि कोई अन्य डेवलपर आया और scammed_at नामक कॉलम जोड़ा, तो मैं scammed_at विधि के साथ scammed_day बनाया चाहता था।
मैं यह कैसे करूँगा?
धन्यवाद।
(*) उह, या ऐसा कुछ, मैं हमेशा कॉल करता हूं।
आप 'define_method' कॉल को कॉलम.नाम = ~/_at $ /' सशर्त में लपेटेंगे। –
आप निश्चित रूप से सही हैं, सुधार जोड़ा गया है, धन्यवाद – apneadiving
इसलिए यदि मैं इसे मॉडल फ़ाइल में जोड़ता हूं, तो मैं अपने अन्य विधि डीफ़ स्टेटमेंट के बाद मानता हूं, डेटाबेस द्वारा कॉलम परिभाषित किए जाने के बाद यह लोड हो जाएगा? वही है जो मैं चाहता हूं। –