はじめに
Solidusで追加機能実装をする際、商品カテゴリーで採用されている入れ子構造を把握する必要があったため、紹介します。
入れ子構造は、ツリー構造をもとに設計されおり、ツリー(木)やルート(根)、リーフ(葉),ノード(節)などの言葉が出てきます。
到達点
以下の2点を達成します
・solidusの商品カテゴリーで採用されている入れ子構造を理解する
・Gem Awesome Nested Setで使用できるメソッドを理解する
商品カテゴリーで採用されている入れ子構造
今回、商品カテゴリーは以下の通りです
Category
|--Bags
|--Mugs
|--Clothing
|--Shirts
|--T-Shirts
Brand
|--Chanel
|--Vuitton
一つ一つのツリーをSpree::Taxonomyモデルとし、
今回は、Category(taxonomy.id=1)とBrand(taxonomy.id=2)が該当します。
rootとも表現できます。
各ツリーのノードをSpree::Taxonモデルとし、
今回は、Category、Brandを含めそれ以下全てが該当します。
# Awesome Nested Setで使用できるメソッド Soidusでは、Railsのカテゴリを階層で管理してくれるGem Awesome Nested Set を実装しております。 追加実装で使用したメソッドを紹介します。
root:ツリートップ
Spree::Taxon.roots
→ Category,Brand を取得
leaf:末端
Category.leaves
→ Bags,Mugs,Shirts,T-Shirts を取得 *Clothingは末端ではない
child:直近の子ノード
Category.children
→ Bags,Mugs,Clothing を取得 *Shirts,T-Shirtsは孫ノード
parent:直近の親ノード
Bags.parent
→ Category を取得
他にも以下のサイトで使用できるメソッドを確認できます。
https://github.com/collectiveidea/awesome_nested_set/wiki/Awesome-nested-set-cheat-sheet