में प्रतिनिधि विधि के लिए तर्क कैसे पारित करें मैं कई मॉडलों के सारांश को प्रदर्शित करने के लिए डैशबोर्ड रखना चाहता हूं, और मैंने इसे अपने डेटा के बिना प्रेजेंटर का उपयोग करके कार्यान्वित किया। मैं एक ActiveModel वर्ग (डेटा तालिका के बिना) का उपयोग करें:रेल
class Dashboard
attr_accessor :user_id
def initialize(id)
self.user_id = id
end
delegate :username, :password, :to => :user
delegate :address, :to => :account
delegate :friends, :to => :friendship
end
प्रतिनिधि, मैं Dashboard.address
फोन और वापस Account.find_by_user_id(Dashboard.user_id).address
प्राप्त करने में सक्षम होना चाहता हूँ।
तो डैशबोर्ड एक ActiveRecord वर्ग था, तो मैं Dashboard#belongs_to :account
घोषित किया जा सकता था और प्रतिनिधि काम करेगा स्वचालित रूप से (यानी, वे जानते हैं कि यह खाता user_id
साथ खाते से पता विशेषता लौट जाना होगा डैशबोर्ड उदाहरण में to user_id
के बराबर होती है)।
लेकिन डैशबोर्ड एक ActiveRecord वर्ग नहीं है, इसलिए मैं belongs_to
घोषित नहीं कर सकता। मुझे सही रिकॉर्ड देखने के लिए खाता बताने का एक और तरीका चाहिए।
क्या इस समस्या को दूर करने का कोई तरीका है? (मुझे पता है कि मैं एक खाली टेबल रखने के लिए नकली डैशबोर्ड कर सकता हूं, या मैं उपयोगकर्ता के उदाहरण विधियों को कक्षा विधियों के लिए फिर से लिख सकता हूं जो तर्क लेते हैं। लेकिन ये समाधान सभी हैक्स हैं)।
धन्यवाद।
यह बहुत समझ में नहीं आता है। 'आईडी' क्या है? क्या यह एक संख्या माना जाता है? (आप '(" 123 ") नहीं भेज सकते हैं, यह मान्य विधि नाम नहीं है।) आप' attr_accessor: user_id' के साथ 'Dashboard.user_id' का उपयोग नहीं कर सकते, एक वर्ग है और दूसरा उदाहरण है। .. कृपया स्पष्ट करें और उदाहरण दें कि आप इसे कैसे काम करने की उम्मीद करते हैं। –
हाय एंडी, हो सकता है कि मैं पर्याप्त स्पष्ट न हो। कृपया ध्यान दें कि यह एक नियमित ActiveRecord :: बेस क्लास नहीं है। इसलिए, मुझे current_user की आईडी पकड़ने के लिए एक विशेषता की आवश्यकता है। (हालांकि मैं इस आईडी को स्थायी रूप से नहीं रखना चाहता)। प्रतिनिधि द्वारा, मैं डैशबोर्ड.ड्रेस को कॉल करने में सक्षम होना चाहता हूं और खाता वापस भेजना चाहता हूं। Find_by_user_id (Dashboard.user_id) .address। मैंने इस फ़ंक्शन को खाता वर्ग में प्रतिनिधि करने का प्रयास किया, लेकिन मुझे किसी भी तरह से user_id मान को खाते में पास करने की आवश्यकता है, ताकि यह पता चले कि किस खाते के उदाहरण के साथ काम करना चाहिए। – AdamNYC