चलो कहते हैं कि हम इन मॉडलों करतेबहुरूपी रेल के साथ वर्ग
class Message
belongs_to :messageable, polymorphic: true
end
class Ticket
has_many :messages, as: :messageable
has_many :comments
end
class User
has_many :messages, as: :messageable
has_many :ratings
end
class Rating
belongs_to :user
end
class Comment
belongs_to :ticket
end
अब मैं सभी संदेशों को (जो tickets
या users
संबद्ध कर दिया है) लोड करना चाहते हैं, और उत्सुक लोड वर्ग के प्रकार पर निर्भर या तो tickets
के लिए comments
और ratings
के लिए users
पाठ्यक्रम Message.includes(:messageable).order("created_at desc")
का केवल सीधे जुड़े वस्तु शामिल हैं, लेकिन सवाल यह है कि विभिन्न संघ प्रकार है कि एक मॉडल से निकाले जाते हैं शामिल करने के लिए किया जाएगा प्रकार (यानी इस उदाहरण में, comments for tickets
और ratings for users
लोड करने के लिए उत्सुक कैसे करें)?
यह एक साधारण उदाहरण है, लेकिन इससे भी अधिक जटिल मामलों के बारे में क्या है, जहां मैं user
, एक और एसोसिएशन के लिए कुछ और शामिल करना चाहता हूं, और यदि उस संगठन को और अधिक की आवश्यकता है तो क्या होगा?
आप एक समाधान मिला? –
मैंने वास्तव में इसे मैन्युअल रूप से किया था। संदेश प्राप्त करें, और प्रत्येक संदेश प्रकार के लिए एसोसिएशन को संबंधित के साथ खींचें, और फिर उन्हें संदेश सरणी में वापस शामिल करें। यह सुंदर नहीं है, लेकिन यह –
आपके उत्तर साझा करता है? – coderVishal