ruby on rails 3.2 - Why can't I add an object to the relationship? -
बस रेल सीखना ...
मेरे पास निम्न मॉडल हैं:
वर्ग टाइमस्लॉट & lt; ActiveRecord :: बेस has_and_belongs_to_many: प्रयोक्ता एंड क्लास उपयोगकर्ता & lt; ActiveRecord :: has_and_belongs_to_many: time_slots अंत मैं भी दो में शामिल होने के लिए एक मॉडल है:
वर्ग TimeSlotsUsers & LT; ActiveRecord :: बेस attr_accessible: time_slot_id,: user_id end कंसोल में, मैं एक उपयोगकर्ता ऑब्जेक्ट बनाऊँ और मैं इसे TimeSlot से संबद्ध करना चाहता हूं। मेरे पास एक वेरिएबल ts है जो एक टाइमस्लोट ऑब्जेक्ट है, और u यह एक उपयोगकर्ता ऑब्जेक्ट है दोनों डेटाबेस में मौजूद हैं। जब मैं ts.users & lt; & lt; यू , मैं कह एक त्रुटि मिलती है "ActiveRecord :: StatementInvalid: SQLite3 :: ConstraintException: time_slots_users.created_at शून्य नहीं हो सकता: में डालने" time_slots_users "(" time_slot_id "," user_id ") मान (1, 1) । क्यों अशक्त हो created_at हैं? नहीं यह स्वचालित रूप से जब TimeSlotsUsers में रिकॉर्ड बनाया जाता है बनाया जा रहा है? मैं बजाय रिश्ते के माध्यम से एक है-कई का उपयोग करने की आवश्यकता है?
एक में शामिल होने के मॉडल एक अच्छा पैटर्न है अगर आप user_id और संबंध जहाज के हिस्से के रूप timeslot_id के अलावा अन्य कोई जानकारी चाहते हैं। उदाहरण के लिए , यदि आपके पास समूहों और उपयोगकर्ता हैं और आपके पास कई-से-कई रिश्ते हैं, लेकिन कभी-कभी उपयोगकर्ता एक समूह का एक admin होता है, आप डाल सकता है is_admin में शामिल होने के मॉडल पर विशेषता। अपने में शामिल होने के मॉडल रखने के लिए, के रूप में इस प्रकार है ...
<कोड एक बेहतर रेल गपशप है > क्लास टाइमस्लॉट & lt; ActiveRecord :: बेस है_मेना: टाइम_एसलोट_ यूज़र है_माध्यम: उपयोगकर्ता, इनके माध्यम से: : Time_slot_users एंड क्लास उपयोगकर्ता & lt; ActiveRecord :: बेस has_many: time_slot_users has_many: time_slots, के माध्यम से: time_slot_users अंत वर्ग TimeSlotsUsers & LT; ActiveRecord :: बेस is_to: उपयोगकर्त्तास_संदर्भ: समय_स्लॉट समाप्ति मैं अन्य उत्तरों में से असहमत हूं जो कि शामिल तालिका में कोई प्राथमिक कुंजी की वकालत नहीं करता है। जब आप REST एपीआई का उपयोग कर उस संबंध को हटाना या संपादित करना चाहते हैं, तो रिश्ते महत्वपूर्ण हैं, उदाहरण के लिए। चाहे एक updated_at या बनाया_टा है, यह निर्भर करता है कि क्या वह आपकी समस्या डोमेन में उपयोगी डेटा हैं या नहीं। यह उपयोगी जानकारी हो सकती है, उदाहरण के लिए, यह जानने के लिए कि जब किसी उपयोगकर्ता को एक समूह में जोड़ा गया हो (या हो सकता है)। इस पर शामिल होने की मेज पर एक अद्वितीय इंडेक्स (user_id, Time_slot_id) डेटा अखंडता सुनिश्चित करने के लिए रेल मॉडल 99.999% के उदाहरणों में मज़बूती से विशिष्टता को मान्य कर सकते हैं, लेकिन समय का 100% नहीं।
Comments
Post a Comment