【Rails】seedファイル使い方


はじめに

学習中の備忘録です。

概要

  • 通常のデータ登録
  • ancestryを使用した際のデータ登録

前提

Rails 5.2.4.2

通常のデータ登録

今回は格言をランダムで表示する為に、messageテーブルにcontent,author,descriptionを登録する。

seeds.rb
Message.create([{content: "自分自身を信じて~", author: "ゲーテ", description: "ドイツの詩人"},
{content: "たいていの人は~", author: "バーバラ・ブラハム", description: "米国の女性ビジネスコンサルタント"},
#~省略~
{content: "人間のほほえみ~", author: "マザー・テレサ", description: "カトリック教会の修道女、ノーベル平和賞受賞"}
])

rails db:seedを実行

ターミナル
% rails db:seed

seed後のmessageテーブル

ancestryを使用した際のデータ登録

以前フリマアプリを作成した際の多階層categoriesテーブル(親・子・孫)
※ancestryについては別記事で。先にインストールしてください。

seeds.rb
#親カテゴリーのnameカラムを登録し、子カテゴリー登録のためにそれぞれ変数に代入。
lady, men, baby_kids, interior_housing, book_music_game, toy_hobby_goods, cosme_perfume_beauty, appliance_smartphone_camera, sports_leisure, handmade, ticket, car_motorcycle, others 
= Category.create([{name: "レディース"}, {name: "メンズ"}, {name: "ベビー・キッズ"}, {name: "インテリア・住まい・小物"}, {name: "本・音楽・ゲーム"}, {name: "おもちゃ・ホビー・グッズ"}, {name: "コスメ・香水・美容"}, {name: "家電・スマホ・カメラ"}, {name: "スポーツ・レジャー"}, {name: "ハンドメイド"}, {name: "チケット"}, {name: "自動車・オートバイ"}, {name: "その他"}
])

#"レディース"の子カテゴリーに"トップス"を登録し、孫カテゴリー登録のために変数に代入。
lady_1 = lady.children.create(name: "トップス")

#"トップス"の子カテゴリーに各カテゴリー登録。
lady_1.children.create([{name: "Tシャツ/カットソー(半袖/袖なし)"},
{name: "Tシャツ/カットソー(七分/長袖)"},
{name: "シャツ/ブラウス(半袖/袖なし)"},
#~省略~
{name: "その他"}])

#以下登録したいカテゴリーの数だけ続ける
lady_2 = lady.children.create(name: "ジャケット/アウター")
lady_2.children.create([{name: "テーラードジャケット"},
{name: "ノーカラージャケット"},
#~続く~

rails db:seedを実行

ターミナル
% rails db:seed

seed後のcategoriesテーブル

まとめ

別モデルのデータを一つのファイルにまとめて記述しても問題なく登録できます。
が、ファイルを分けた方が良いみたいですので、それはまた別の機会にします。