activerecord - Rails: Calling one Model from another Model. Why is this not possible? -
मेरे पास निम्न मॉडल है ...
class कक्ष & lt; ActiveRecord :: बेस is_to: होटल में संबंधित है: लेआउट है_मैं: विज़िट मान्य: संख्या, उपस्थिति: सही पुष्टि: दर, उपस्थिति: सही पुष्टि: धूम्रपान, उपस्थिति: सच डीआरएफ self.rooms_with_smoking (धूम्रपान) स्वयं। जहां ('धूम्रपान =?' , धूम्रपान) अंत डीईएफ़ self.occupied_rooms (FROM_DATE, TO_DATE) # 24-26 self.joins (: का दौरा) .where ( 'तारीख & gt; = और तारीख & lt; =?', FROM_DATE, TO_DATE) .uniq अंत डीईएफ़ आत्म .vacant_rooms (FROM_DATE, TO_DATE) self.where.not (आईडी: Room.occupied_rooms (FROM_DATE, TO_DATE)) अंत डीईएफ़ self.blahblah (occupancy_count, धूम्रपान, FROM_DATE, TO_DATE) लेआउट = Layout.layouts_with_occupancy_count_gt (occupancy_count) Room.rooms_with_smoking ( धूम्रपान करने के लिए)। Vacant_rooms (से _डेट, टू_डेट) .जोम (लेआउट) एंड एंड
ब्लैब्लैह विधि ...
जब मैं इसे आईआरबी से चलाने का प्रयास करता हूं एक त्रुटि ... "अज्ञात वर्ग: लेआउट"
1) क्या कक्ष को लेआउट के बारे में 'पता' नहीं है क्या मैं इस तरह किसी अन्य मॉडल का उपयोग नहीं कर सकता हूं? मैं यह कैसे कर सकता हूं। 2) सिद्धांत प्रश्न: क्या कुछ जानकारी प्राप्त करने के लिए एक बड़ी पद्धति परिभाषा के लिए बेहतर है ... या क्या बहुत कम संयोजन वाले तरीकों के लिए बेहतर है, और उनका उपयोग करें सभी एक तरीके से डेटा का एक बड़ा हिस्सा प्राप्त करने के लिए। उदाहरण के लिए ...
वन 'बड़े' विधि:
डीईएफ़ self.find_rooms_with (occupancy_count, धूम्रपान, FROM_DATE, TO_DATE) Room.vacant_rooms (FROM_DATE, TO_DATE)। जहां ('धूम्रपान =?', धूम्रपान) अंत
किसी भी तरह से बड़ा नहीं है, लेकिन सब कुछ फिर से है -coded। जैसे कि यह लंबे समय के लिए सूखी पालन करेगा प्रतीत नहीं होता है
कई छोटे तरीके:।
डीईएफ़ self.blahblah (occupancy_count, धूम्रपान, FROM_DATE, TO_DATE) लेआउट = लेआउट। layouts_with_occupancy_count_gt (occupancy_count) Room.rooms_with_smoking (धूम्रपान) .vacant_rooms (FROM_DATE, TO_DATE) .joins (लेआउट) अंत
एक दूसरे के कोड आसान है। यह पद्धति परिभाषाओं में निर्मित 3 का उपयोग करता है हालांकि, क्या किसी भी प्रकार के प्रदर्शन को पहले एक पर मारा गया है, या यह कम वांछनीय है?
संपादित करें : नीचे दिए गए दो दो टिप्पणियों का जवाब ...
जब मैं सिर्फ लेआउट, या एपी लेआउट टाइप करता हूं, तो मुझे अपना संपूर्ण लेआउट मॉडल मिलता है।
class लेआउट & lt; ActiveRecord :: बेस {: id = & gt; : पूर्णांक,: विवरण = & gt; : स्ट्रिंग,: occupancy_count = & gt; : पूर्णांक,: बनाया_आिल = & gt; : डेटा टाइम, अपडेटेड_एट = & gt; : Datetime} = & gt; शून्य
और आईआरबी द्वारा, हाँ, मेरा अर्थ है कि रेल कंसोल पूर्ण लेआउट मॉडल यहां ...
वर्ग लेआउट & lt; ActiveRecord :: बेस has_many: कमरे की पुष्टि करता है: विवरण, उपस्थिति: सच सत्यापन करती है: occupancy_count, उपस्थिति: सच डीईएफ़ self.layouts_with_occupancy_count (occupancy_count) self.where ( 'occupancy_count =?', Occupancy_count) अंत डीईएफ़ self.layouts_with_occupancy_count_gt (occupancy_count) स्व। जहां ( 'occupancy_count & gt; =', occupancy_count) अंत अंत
1) यह लगता है कि आप लेआउट वर्ग घोषित नहीं करते हैं।
संबंधित_तो
वर्ग पद्धति परिभाषित होने के लिए एक संबंधित ActiveRecord वर्ग। डिफ़ॉल्ट रूप से यह विधि का नाम (: लेआउट
से संबंधित लेआउट
) से मेल खाना चाहिए।
Comments
Post a Comment