開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina
前提
下記実装済み。
・投稿機能実装
・多対多のカテゴリー機能実装
・多階層カテゴリー機能実装(準備編)
実装
id | name | ancestry |
---|---|---|
1 | ビジネス | nil |
2 | 金融 | 1 |
3 | 株 | 1/2 |
4 | 為替 | 1/2 |
5 | 税金 | 1/2 |
6 | 経済 | 2 |
7 | 日本経済 | 1/6 |
8 | 国際経済 | 1/6 |
9 | 経営 | 3 |
10 | 経営学 | 1/9 |
11 | 戦略・攻略 | 1/9 |
12 | 企業・開業 | 1/9 |
13 | マーケティング | 4 |
14 | 経営学 | 1/13 |
15 | 戦略・攻略 | 1/13 |
16 | 企業・開業 | 1/13 |
本のカテゴリーに上記の様な親子関係を持たせたい場合は、以下の様にデータを作成します。
seed.rb
business = Category.create(name: 'ビジネス')
business_children_array = ['金融', '経済', '経営', 'マーケティング']
business_grandchildren_array = [
['株', '為替', '税金'], # 金融の子
['日本経済', '国際経済'], # 経済の子
['経営学', '戦略・管理', '起業・開業'], # 経営の子
['広告', '営業', '開発'] # マーケティングの子
]
business_children_array.each_with_index do |children, index|
children = business.children.create(name: children)
business_grandchildren_array[index].each do |grandchildren|
children.children.create(name: grandchildren)
end
end