रिकर्सिव: रेल में शामिल - रूबी-ऑन-रेल, पॉलिमॉर्फिज्म शामिल हैं

मेरे पास एक बहुलक मॉडल है जो खुद से संबंधित हो सकता है:

class Comment < ActiveRecord::Base
belongs_to :commentable, polymorphic: true
has_many :comments, as: :commentable
end

ये रिश्तों पूरी तरह से काम करते हैं, सिवाय इसके कि जब मैं एक के माध्यम से बच्चे / माता-पिता की टिप्पणियों के पूरे पेड़ को कॉल करने की कोशिश कर रहा हूं include बयान:

Post.find(1).include(:comments)

इसमें केवल पोस्ट से सीधे जुड़ी टिप्पणियां शामिल हैं। मैं शायद दूसरे स्तर को पुनः प्राप्त कर सकता हूं:

Post.find(1).include(comments: :comments)

लेकिन क्या होगा यदि मैं पोस्ट से उतरने वाली सभी टिप्पणियां प्राप्त करना चाहता हूं, भले ही कितना गहराई से घोंसला हो? क्या यह संभव है?

उत्तर:

जवाब के लिए 2 № 1

ऐसा लगता है कि आप एक आसन्न सूची पुनर्प्राप्त करना चाहते हैं। रेल के पास इसके लिए कोई तत्काल समर्थन नहीं है, लेकिन यदि आप postgresql का उपयोग कर रहे हैं, तो आप "रिकॉर्सीव" ऑपरेटर का उपयोग कर सकते हैं।

वह प्लगइन इसका ख्याल रखता है: https://github.com/chrisroberts/acts_as_sane_tree

अन्यथा, आप आसानी से अपना खुद का पोस्टग्रेस्क्ल फ़ंक्शन बना सकते हैं (इसे माइग्रेशन में घोषित करें), और फिर इसे अपने प्रश्नों में उपयोग करें। अच्छी तरह से देखिए : http://wiki.postgresql.org/wiki/Getting_list_of_all_children_from_adjacency_tree

RECURSIVE के साथ वर्तमान में mysql या sqlite3 में लागू नहीं किया गया है।


संबंधित सवाल
सबसे लोकप्रिय