【チーム開発】本日の進歩状況2020-07-12

・本日の作業

 今日やっとcategoryの実装に入りました。

 まずancestryを使って多段階層カテゴリーを作成しました。Qiitaの参考記事ではancestrymのように経路(Path)をカラムで管理して経路基準で表示させるDB設計のことをPath Enumeration(経路列挙型)というそうです。DBの設計方法といろいろあるんですね。勉強になります。

 ancestryのgemを導入してからCategoryモデルを作成、ルーティングやら設定後categoriesテーブルにデータを投入します。

db/seeds.rbというファイルにancestryのメソッドを用いてデータを挿入していくのですが

 

/seeds.rb

  lady = Category.create(:name=>"レディース")

  lady_tops = lady.children.create(:name=>"トップス")
  lady_jacket = lady.children.create(:name=>"ジャケット/アウター")

  lady_tops.children.create([{:name=>"Tシャツ/カットソー(半袖/袖なし)"}, {:name=>"Tシャツ/カットソー(七分/長袖)"},{:name=>"その他"}])
  lady_jacket.children.create([{:name=>"テーラードジャケット"}, {:name=>"ノーカラージャケット"}, {:name=>"Gジャン/デニムジャケット"},{:name=>"その他"}])

のように単純に列挙していく方法が一番簡単ですけど面倒です。いろいろ調べていくとコードを書いて(:name=>)の記述を省略する方法がありました。

参考サイト

https://qiita.com/ATORA1992/items/617088f885117532454e

 コードが結構長いので参考サイトをどうぞみてください。

子カテゴリー、孫カテゴリーをそれぞれ配列として記述して、後からeachとかcreateでデータを作成するようです。考えた人は天才ですね。

・躓いているところ

データベースの登録を本家並にやると日が暮れそうなので、レディースとメンズのみ作成して実際の投稿機能実装に移りました。ほぼそのままの参考サイトも見つけたし楽勝かと思ったのですがなかなか考えが甘かった。

参考サイト

https://qiita.com/ATORA1992/items/bd824f5097caeee09678

やはり自分自身のJavaScriptの理解が甘すぎるせいで全然エラーが解決できません。

カテゴリー選択時に親カテゴリーの表示はできたのだけれど、その後親を選択するとエラーが出てます。最初からエラーの嵐、スペルが間違っていたためのエラーは大体なくなったと思うのですが、現在は

「カテゴリー取得に失敗しました」という エラーとともに

ActiveRecord::RecordNotFound in ProductsController#get_category_children」

「Couldn't find Product without an ID」

というエラーが。作成したget_category_childrenメソッドでcategoryから選択した親カテゴリーを探して、その子カテゴリーを取得するっていうメソッドだと思うのですが、親が見つからないようです。

どうすれば良いんだ。取り敢えず明日ちょっと考えてメンターさんに相談してみようかと思います。