ruby on rails - Mapping has_many and belongs_to to Active record relation object -
मेरे पास निम्न मॉडल हैं:
मॉडल A & lt; ActiveRecord :: बेस has_many: bs end मॉडल B & lt; ActiveRecord :: बेस is_to: c,,: polymorphic = & gt; सच है,: विदेशी टाइप = & gt; 'C_type',: foreign_key = & gt; 'C_id' end मुझे c से संबंधित a को एक के रूप में प्राप्त करना है ActiveRecord :: संबंध ऑब्जेक्ट इसलिए मूल रूप से मैं निम्नलिखित विधि को हटाना चाहता हूं
a.bs.each do | b | सीएस एंड एलटी; & lt; बीसी एंड क्योंकि यह c की एक सरणी का उत्पादन करेगा, लेकिन मैं c का संग्रह प्राप्त करने में सक्षम होना चाहता हूं, जिस पर मैं जैसे scoping चला सकते हैं: cs.scoped (: order = & gt;: updated_at) .all (: limit = & gt; 5) मुझे लगता है मैपिंग की तरह कुछ सरल अवधारणा है:
a.bs.map (& amp;: to_resource) या ऐसा कुछ।
मैं रेल चला रहा हूँ 2.3.14 वास्तव में इस संबंध में मदद की सराहना करते हैं।
अग्रिम धन्यवाद।
आप ऐसा कर सकते हैं: <पूर्व> वर्ग सी & lt; ActiveRecord :: बेस नामित_स्स्कोप: बाय_ए, लैम्ब्डा {| ए | | {: शर्तें = & gt; {: A_id = & gt; A.id}} end संपादित करें:
मैंने आपका सवाल फिर से पढ़ लिया है और मुझे लगता है कि मैंने आपको पहली बार याद नहीं किया। तो अपने मॉडलों को संक्षेप करने के लिए इस तरह दिखें:
class A & lt; ActiveRecord :: बेस है has_many: बीएस अंत वर्ग बी & lt; ActiveRecord :: बेस is_to: एक is_to: c end class C & lt; ActiveRecord :: बेस है has_many: bs end आप सभी सी प्राप्त करना चाहते हैं जो कि किसी दिए गए A से B से संबंधित हैं, क्या मैं सही हूं? उस स्थिति में आपको क्या चाहिए has_many: cs,: through = & gt; : B अपने मॉडल में तो आपका मॉडल इस तरह दिखता है: वर्ग ए & lt; ActiveRecord :: बेस है has_many: bs has_many: cs,: through = & gt; : B end संपादित करें 2:
आप मॉडल ए के माध्यम से कई जोड़ सकते हैं, भले ही आप मॉड्यूल से कोड सहित उसकी फ़ाइल को संशोधित नहीं कर सकते। आप इसे इस तरह से बना सकते हैं:
सबसे पहले initializer (config / initializers में) इस तरह से करें:
File.dirname की आवश्यकता है (__ फ़ाइल__) + '/../ ../lib/your_module.rb 'एसेन्ड (में शामिल है, आपका मॉड्यूल) तब लिब फ़ोल्डर में इस तरह एक मॉड्यूल बनायें:
मॉड्यूल अपने मॉड्यूल डीआरएफ self.included (प्राप्तकर्ता) प्राप्तकर्ता। विस्तार (क्लासमिप्शन) एंड मॉड्यूल क्लास मेथोड्स है_मैं: सीएस,: के माध्यम से = & gt; : B एंड एंड इसे काम करना चाहिए।
Comments
Post a Comment