ACTS_AS_TREE - واحد إلى كثير: إظهار السجلات المرتبطة بالأطفال على الصفحة الرئيسية
-
18-09-2019 - |
سؤال
لدي علاقة بسيطة نسبيا واحدة إلى العديد من العلاقات واستخدام acts_as_tree للحصول عليها في المنظر. يبدو كيندا مثل هذا:
جذر
|_Product 1
|_Product 2
|_Category 1.1
|_Product 3
|_Product 4
|_Category 1.1.1
|_Product 5
الطريقة التي أقوم بها هي أن أدرج المنتجات في عمل "إظهار" الفئة. ومع ذلك، لا أستطيع أن أبدو أكثر معرفة كيفية عرض: المنتج 1-5 في "المعرض" للفئة 1، المنتج 3-5 في الفئة 1.1 وما إلى ذلك ...
هل لدى أي شخص تلميح، من حيث يمكنني استلامه؟
شكرا! فال
المحلول
قد يكون لديك أيضا نظرة على الأخيرة أسلاف GEM مصممة للأداء العالي عندما يحتاج المرء إلى الحصول على كل أحفاد في استعلام SQL واحد.
نصائح أخرى
إذا كنت تستخدم Awesome_nester_set_set (الموصى بها، أفعل)، فيمكنك القيام بذلك:
إذا كان المنتج ينتمي_ فئة:
class Category < ActiveRecord::Base
def products_in_tree
Product.all(:joins => :category, :conditions => ['categories.lft >= ? and categories.rgt <= ?', left, right])
end
end
إذا كان المنتج has_and_belongs_to_many الفئة (أو has_many: من خلال)، قم بتغيير: انضم إلى: الفئات.
تحتاج إلى استخدام مجموعة متداخلة إذا كنت تريد حل هذا بأداء مقبول (أي، تجنب العديد من عمليات البحث عن قاعدة البيانات المنفصلة لتجميع القائمة).
القضبان تستخدم أن تكون بمثابة أعمال _ كما _ متناثرت مدمجة، و شرح كيف يعمل لا يزال جيدا جدا وصحيح جدا. اليوم يجب عليك استخدام هذا ك توصيل في.
ومع ذلك، فإن البرنامج المساعد للقضبان الافتراضية ليست جيدة جدا، ولهذا السبب تم إجراء العديد من الإضافات الأخرى. سوف أوصي بأن تستخدم مجموعة متداخلة رهيبة, ، والتي استخدمتها نفسي بأسعار مرضية.
يمكن أن تكون مجموعات متداخلة من الصعب الفهم، ولكن نأمل أن يشرح ذلك الرابط الأول والكسلأ الآخر لك.