ruby on rails - how to define a named_scope to roll up a has_many with nested models? -
पहले डेटा मॉडल:
class फ़ोरम & lt; ActiveRecord :: बेस है has_many: विषय,: निर्भर = & gt; : नष्ट करें, आदेश = & gt; 'बनाया_एट डेस' एंड क्लास उपयोगकर्ता & lt; ActiveRecord :: बेस है has_many: विषय,: निर्भर = & gt; : नष्ट है has_many: टिप्पणियाँ,: निर्भर = & gt; : नष्ट है has_many: उत्तर, आश्रित = & gt; : अंत वर्ग विषय को नष्ट करें & lt; ActiveRecord :: बेस is_to: मंच belongs_to: उपयोगकर्ता has_many: टिप्पणियाँ,: निर्भर = & gt; : एंड क्लास को नष्ट करें टिप्पणी & lt; ActiveRecord :: बेस is_to: उपयोगकर्ता is_to: विषय has_many: उत्तरः, निर्भर = & gt; : अंत वर्ग को नष्ट करें & lt; ActiveRecord :: बेस is_to: उपयोगकर्ता के संबंध में: टिप्पणी समाप्ति
तो उपयोगकर्ता विषय को मंच पर पोस्ट कर सकते हैं। वे फोरम में विषय पर टिप्पणियां भी पोस्ट कर सकते हैं। और वे टिप्पणियों के उत्तर पोस्ट कर सकते हैं।
मैं उन फोरमों की एक सूची प्राप्त करने में सक्षम होना चाहता हूं, जिन्होंने विषय या टिप्पणियां पोस्ट कर या भाग में भाग लिया है।
आप फोरम मॉडल में क्या चाहते हैं।
फोरम मॉडल में आपकी टिप्पणी के लिए रिश्तेदारों के माध्यम से और उनसे जोड़कर बहुत ज्यादा सरल हो सकते हैं: फोरम मॉडल में उनसे जुड़ें। लेकिन मुझे कभी भी याद नहीं आ रहा है कि नेस्टेड कैसे काम करता है, इसलिए मैंने एक समाधान पोस्ट किया है जो आपके पास क्या मिला है।
class फ़ोरम & lt; ActiveRecord :: बेस है has_many: विषय,: निर्भर = & gt; : नष्ट करें, आदेश = & gt; 'Created_at desc' नामित_स्स्कोप: user_posted, लैम्ब्डा {| उपयोगकर्ता | {: जॉन्स = & gt; "विषयों पर शामिल हों t.forum_id = forums.id" + "सी पर क्लिक करें c.topic_id = t.id" + "आर कॉमेंट_आईडी = c.id पर आरम्भ करें",: conditions = & gt; ["T.user_id =? OR c.user_id =? या r.user_id =?", उपयोगकर्ता, उपयोगकर्ता, उपयोगकर्ता],: समूह = & gt; "मंचों .id"}} अंत
अब ...
फोरम.उसेर_पोस्टेड (@ यूज़र)
मंचों की एक सरणी वापस लौटाएगी जहां एक उपयोगकर्ता ने कोई विषय पोस्ट किया है, उत्तर दें या टिप्पणी।
एक विशिष्ट उपयोगकर्ता द्वारा पोस्ट किए गए मंचों की सूची के लिए:
वर्ग उपयोगकर्ता & LT; ActiveRecord :: बेस है has_many: विषय,: निर्भर = & gt; : नष्ट है has_many: टिप्पणियाँ,: निर्भर = & gt; : नष्ट है has_many: उत्तर, आश्रित = & gt; : नष्ट नामित_सस्कोप: पोस्ट_इन_फोरम, लैम्ब्डा {| फ़ोरम | {: जॉन्स = & gt; "आर। Rsuser_id = users.id पर आरम्भ करें" + "जॉब प्रविष्ट करें c.user_id = users.id या c.id = r.comment_id" + "टी। यूजर_आईडी = यूज़रएड या टी पर विषयों को शामिल करें। .id = c.topic_id "+" फ़ोरम एफ पर t.forum_id = forums.id ",: conditions = & gt; ["F.id =?", फ़ोरम],: समूह = & gt; मान लें कि मुझे यह अधिकार मिल गया है:
/ पूर्व>User.posted_in_forum (@forum)
उन उपयोगकर्ताओं की एक सूची वापस करेगा जो मंच में या तो विषय, टिप्पणी या उत्तर द्वारा पोस्ट किए हैं।
PS यह शायद इस मॉडल में उपयोगकर्ताओं के विनाश की अनुमति देने के लिए एक अच्छा विचार नहीं है। जिस तरह से आपने चीजें रखी हैं, अगर कोई प्रयोक्ता नष्ट हो जाता है, तो किसी भी विषय, उत्तर या पोस्ट किए गए टिप्पणियां भी हटा दी जाएंगी। इसके बजाय आपके उपयोगकर्ताओं को निष्क्रिय किया जाना चाहिए।
Comments
Post a Comment