मैं अपने रेल प्रोजेक्ट में awesome_nested_set
प्लगइन का उपयोग कर रहा हूं।किसी नेस्टेड सेट से सभी रिकॉर्ड को वास्तविक HTML पेड़ में कैसे प्रस्तुत करें
class Customer < ActiveRecord::Base
has_many :categories
end
class Category < ActiveRecord::Base
belongs_to :customer
# Columns in the categories table: lft, rgt and parent_id
acts_as_nested_set :scope => :customer_id
validates_presence_of :name
# Further validations...
end
डेटाबेस में पेड़ के रूप में उम्मीद का निर्माण किया है: मैं दो मॉडल है कि इस (सरलीकृत) की तरह लग रही है। parent_id
, lft
और rgt
के सभी मान सही हैं। पेड़ में कई रूट नोड्स हैं (जिन्हें निश्चित रूप से awesome_nested_set
में अनुमति दी गई है)।
अब, मैं किसी दिए गए ग्राहक की सभी श्रेणियों को संरचना जैसे सही ढंग से सॉर्ट किए गए पेड़ में प्रस्तुत करना चाहता हूं: उदाहरण के लिए नेस्टेड <ul>
टैग। यह बहुत मुश्किल नहीं होगा लेकिन मुझे इसे कुशल होने की आवश्यकता है (कम एसक्यूएल प्रश्न बेहतर)।
अद्यतन: यह पता लगाया गया है कि बिना किसी एसक्यूएल प्रश्नों के पेड़ में दिए गए नोड के लिए बच्चों की संख्या की गणना करना संभव है: number_of_children = (node.rgt - node.lft - 1)/2
। यह समस्या का समाधान नहीं करता है लेकिन यह सहायक साबित हो सकता है।
यह काम करता है। आप भी awesome_nested_set के बारे में सही हैं। मैं आश्चर्यचकित नहीं कर सकता कि यह प्लगइन में पहली जगह क्यों नहीं बनाया गया है। धन्यवाद! –
उल्लेख करने के लिए भूल गए: आपके समाधान के बारे में आवश्यक बिंदु यह है कि इसे केवल एक एकल SQL क्वेरी की आवश्यकता है! –
http://gist.github.com/460814 –