ancestry その1

子要素孫要素の作り方は結構記事あったので下の参考記事でも読めばいい。

DBにどんな風にancestryが入るかを説明する。(自分がネットから拾って来て使ってるseedファイルを例にしてるから変な入れ方すると変わるかもしれんけど、要は祖先のidがancestryカラムに入ってく)

最初の階層のancestryはnilになる。これは分かり易い。

子要素の値は親要素のid。これは単純に主キーのid。なのでid1にレディースと入っていた場合にレディースのancestryはnilだけど、こいつの子、仮にトップスとしよう、のancestryは1である(トップスのidは2だとする)。

さらにこいつの子、つまり孫になるとancestryは1/2になる。孫はたくさん居るが、こいつらのancestryは全部1/2である。ただしidはどんどん使っていくからレディースのトップスの孫達だけでidを20まで消費したとする。

するとまた子要素レベルに戻るワケだけど、レディースから派生してるジャケット/アウターが子供に来ていたとする。こいつは20までidとられてるからidが21である。親はレディースなのでid1である。よってこのジャケット/アウター自体のancestry自体は1であるが、こいつから派生してる孫のancestryは全て1/21である。

こんな感じで親がレディース(id1)の子と、その子のidをancestryに含む(1/子のid)孫がしばらく続く。

そしてレディースから派生した孫がid199(ancestry1/196とか)で終わったとすると、次の1階層目のカテゴリー、メンズがid200で登場する(ancestryはnil)。メンズの最初子のancestryは200になる。最初の孫のidは201なので孫は200/201から孫がしばらく続く。

次の子もancestryは200でそいつのidが214だとすると、id214の子から派生した孫は全て200/214になる。

 

あとはこれの繰り返し。

 

追記予定

参考記事

https://note.com/syojikishindoi/n/nd8ddd8cb93f8

https://shura.design/2019/09/10/archives/690

https://umakki.com/archives/33

公式

https://github.com/stefankroes/ancestry