ACTS_AS_TREE - واحد إلى كثير: إظهار السجلات المرتبطة بالأطفال على الصفحة الرئيسية

StackOverflow https://stackoverflow.com/questions/1688830

سؤال

لدي علاقة بسيطة نسبيا واحدة إلى العديد من العلاقات واستخدام 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: من خلال)، قم بتغيير: انضم إلى: الفئات.

تحتاج إلى استخدام مجموعة متداخلة إذا كنت تريد حل هذا بأداء مقبول (أي، تجنب العديد من عمليات البحث عن قاعدة البيانات المنفصلة لتجميع القائمة).

القضبان تستخدم أن تكون بمثابة أعمال _ كما _ متناثرت مدمجة، و شرح كيف يعمل لا يزال جيدا جدا وصحيح جدا. اليوم يجب عليك استخدام هذا ك توصيل في.

ومع ذلك، فإن البرنامج المساعد للقضبان الافتراضية ليست جيدة جدا، ولهذا السبب تم إجراء العديد من الإضافات الأخرى. سوف أوصي بأن تستخدم مجموعة متداخلة رهيبة, ، والتي استخدمتها نفسي بأسعار مرضية.

يمكن أن تكون مجموعات متداخلة من الصعب الفهم، ولكن نأمل أن يشرح ذلك الرابط الأول والكسلأ الآخر لك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top