2015-10-14 14 views
6

के माध्यम से मैं एक्टो में User मॉडल और Group मॉडल के बीच कई रिश्तों के लिए काम करने का प्रयास कर रहा हूं।Ecto has_many: फॉर्म

एकमात्र जानकारी जिसे मैं ऑनलाइन ढूंढने में सक्षम था, जोसे वैलीम here (जिस तरह से उत्कृष्ट है) द्वारा पोस्ट में नेस्टेड विशेषताओं से संबंधित था।

चूंकि समूह पहले से ही सिस्टम में मौजूद हैं, इसलिए मैं एक से अधिक चयन इनपुट करने की उम्मीद कर रहा था। मैं ऐसा करने में कुछ मुद्दों में भाग गया। मैं नहीं मानता कि यह changeset सीधे क्योंकि मैं एक त्रुटि हर बार मैं ऐसा करने की कोशिश की हो रही थी में groups संघ आवंटित करने के लिए संभव है। मेरा अगला सोचा (, खोजने को हटाने, और GroupMembership रिकॉर्ड डालने) मैन्युअल रूप से काम करने के लिए गया था, लेकिन मुझे यकीन है कि अगर यह सही रास्ते नीचे जाने के लिए था, और पहले कुछ सलाह प्राप्त करना चाहता था नहीं था।

चूंकि कोड नमूने में कुछ पंक्तियां हैं, इसलिए मैंने एक गिस्ट here बनाया है।

यदि यह पसंद किया गया है कि मैं इसे सीधे इस प्रश्न में पोस्ट करता हूं, तो मैं निश्चित रूप से ऐसा कर सकता हूं।

सभी मदद के लिए धन्यवाद!

+0

मैं Ecto कोड से बात नहीं कर सकता, लेकिन मैं डीबी डिजाइन सिद्धांतों से बात कर सकते हैं। रिलेशनल डीबी प्रकार आपको बताएंगे कि आप एन से संबंधों को मॉडल नहीं कर सकते हैं। आप जो करते हैं वह एक रिलेशन टेबल (आपके मामले में UserInGroups की तरह कुछ) बनाता है और फिर आप उपयोगकर्ताओं और समूहों से 1-n बनाते हैं। मुझे यकीन नहीं है कि यह आपके एक्टो मुद्दे की मदद करेगा लेकिन यह आपके डेटा को मॉडल करने का एक बेहतर तरीका है। FWIW। –

उत्तर

3

दुर्भाग्य से एक्टो 1.0 कई लोगों को समर्थन नहीं देता है। इसका मतलब है कि आपको आईडी प्राप्त करने और मैन्युअल रूप से उपयोगकर्ता द्वारा संबद्ध प्रत्येक समूह के लिए इंटरमीडिएट एसोसिएशन बनाने की आवश्यकता होगी। हम भविष्य की रिलीज में इसे आसान बनाने की उम्मीद करते हैं।

संपादित करें: Ecto 2.0 कई_to_many का समर्थन करता है।

+0

सिर के लिए धन्यवाद! –

+2

इस बात की पुष्टि करने के लिए, Ecto समर्थन has_many करता है: (क तालिका में शामिल होने के माध्यम से) के माध्यम से, न कि केवल रेल शैली has_and_belongs_to_many। क्या वह सही है? डॉक्स: http://hexdocs.pm/ecto/Ecto.Association.HasThrough.html – neon

+0

@ जोसे अभी भी एक्टो के नवीनतम संस्करण के साथ मामला है? (2018 जनवरी के रूप में, यह 2.27 है) – dsignr

संबंधित मुद्दे