Sunday, 15 June 2014

ruby on rails - Getting duplications when listing records when using has_many :through -


प्रबंधक , साइट और

लक्ष्य

मैं इस तरह से विज़िट्स बनाने में सक्षम होना चाहूंगा कि जब मुझे एक मान्य प्रबंधक और मान्य साइट मैं एक वैध यात्रा बनाऊँगा।

समस्याएं

जब मैंने इसे एक सरल has_many: हालांकि एसोसिएशन के साथ करने की कोशिश की मुझे कुछ अप्रत्याशित परिणाम मिल गए हैं (मैं इसे बहुत बार उपयोग नहीं कर रहा हूं)।

मैंने इसे इस तरह सेट किया है:

  वर्ग प्रबंधक & lt; ActiveRecord :: बेस है has_many: साइटों, के माध्यम से:: है visits_many: विज़िट्स एंड क्लास साइट & lt; ActiveRecord :: बेस है has_many: प्रबंधकों, के माध्यम से:: यात्राओं है has_many: यात्राओं का अंत वर्ग & lt; ActiveRecord :: बेस is_to: manager is_to: site end  

पहली समस्या मुझे तब होता है जब मुझे एक प्रबंधक और साइट मिलती है:

  manager = manager.find (3) साइट = Site.find (5)  

और मैं दो यात्राओं का निर्माण करता हूं:

  Visit.create (प्रबंधक: प्रबंधक, साइट: साइट) Visit.create (प्रबंधक: प्रबंधक, साइट: साइट)  

मेरे पास 2 विज़िट्स अपेक्षित हैं:

  प्रबंधक .visits.count # 2 site.visits.count # 2  

लेकिन मुझे उम्मीद नहीं थी और मैं मैनेजर के लिए 2 साइट नहीं मानता हूं:

  Manager.sites.count # 2  

मुझे सिर्फ एक ही साइट पर लौटने के लिए manager.sites पसंद होंगे क्योंकि इस प्रबंधक ने केवल एक साइट का दौरा किया है: /

समस्या 2 यह है कि मैं यह कैसे समझाना नहीं समझ सकता कि यह कैसे सेट किया गया है, इसलिए यह मेरे द्वारा वर्णित तरीके से काम करता है।

क्या कोई मुझे मदद कर सकता है?

क्या कोई मुझे मदद कर सकता है?

शायद आपको विज़िट में काउंटर कॉलम जोड़ना चाहिए, और प्रत्येक विज़िट के लिए नई पंक्ति बनाने के बजाय आप बस कुछ जैसे < कोड> एक्स = विज़िट करें। फेण्ड_ या_क्रेट_बाबी (~ प्रबंधक, ~ साइट); x.counter.increment; (स्कीमा काउंटर में 0 पर डिफ़ॉल्ट होना चाहिए) । प्रत्येक (या स्कोप) के लिए has_many: विज़िट परिभाषित करने से, और Manager.visits.where (जैसे साइट द्वारा खोज) की तरह प्रवेश करें। और यह आपको कुल विज़िट काउंटर देगा ।


No comments:

Post a Comment