1
0

More than 3 years have passed since last update.

【超簡単!】【Rails】ancestry 親子孫を一括管理

Posted at

ancestryとは

Ruby on Rails ActiveRecordモデルのレコードをツリー構造(または階層)として編成できるようにするGemです。
親、子、孫のような関係を一括で管理する。

使い方

1、Gemfileに記述

gem 'ancestry'

2、下記コマンドを忘れないように。サーバーの再起動も合わせて。

$ bundle install

3、categoryモデルを作る。

$ rails g model category name:string

4、マイグレーションファイルの記述を反映

$ rails db:migrate

5、先ほど作ったcategoriesテーブルにancestryのカラムを作成する

$ rails g migration add_ancestry_to_category ancestry:string:index

6、追記した内容もDBに反映させる

$ rails db:migrate

7、モデルにancestryとアソシエーション を組む

category.rb
class Category < ApplicationRecord
   ~省略~
   has_ancestry
end

データ作成例

seeds.rb
#一階層目
lady = Category.create(name: "レディース")

#二階層目
lady_1 = lady.children.create(name: "トップス")

#三階層目
lady_1.children.create([{:name=>"すべて"}, {:name=>"Tシャツ/カットソー(半袖/袖なし)"},{:name=>"Tシャツ/カットソー(七分/長袖)"}])

データを入れ終わったら、、、

$ rails db:seed

この表のようなデータが作成される。

id name   ancestry
1 レディース nil
2 トップス 1
3 すべて 1/2
4 Tシャツ/カットソー(半袖/袖なし) 1/2
5 Tシャツ/カットソー(七分/長袖) 1/2

参考文献

https://qiita.com/enjoy_omame/items/eb03ffa1f2a88a297a7e
https://qiita.com/ren0826jam/items/b8819181d56be7b4c403

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0