Jos*_*ura 2 tree ruby-on-rails hierarchy nested-sets
我想对多个树中的对象进行分类以反映其特征并构建导航.
所以,考虑到以下树木:
Category1
-Category-1-1
-Category-1-2
Category2
-Category-2-1
-Category-2-2
--Category-2-2-1
Run Code Online (Sandbox Code Playgroud)
对象可以例如属于类别1-2和类别-2-2-1.
目标是能够从数据库中获取所有对象
一个更实际的例子:
类别可能具有"工具>园艺工具>切割器"的层次结构.
第二类:'硬物>金属物>小金属物'
对象'Pruners'将被归类为属于'Cutters'以及'Small metal objects'.
我希望能够
请注意,这里的代码都是伪代码.
我会使用祖先 gem并使用三个模型类对数据建模.这样,您的数据就会被标准化,并且它是构建的良好基础.
Category - ancestry tree
has_may Memberships
has_may Products through Memberships
Membership
belongs_to Category
belongs_to Products
Products
has_may Memberships
has_may Categories through Memberships
Run Code Online (Sandbox Code Playgroud)
从那里你需要弄清楚如何有效地执行equerries.我这样做的方法是了解如何使用SQL,然后弄清楚如何使用activercord的DSL表达查询.
一些资源:
查询示例:
查找类别.
Category.find(category_id)
查找类别并将其包含在指定类别中.
Category.find(category_id).join(:memberships => :products)
查找类别的子树ind包括产品
Category.subtree_of(category_id).join(:memberships => :products)
查找产品所属的所有类别.
Product.find(product_id).categories