0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails初学者】Seed Fuを使ってマスタデータを管理してみた

Last updated at Posted at 2025-05-24

RailsでSeed Fuを使ってマスタデータを管理する方法

はじめに

初学者の私が、マスタデータを扱う必要があるアプリケーションを作る中で、初期データの登録や更新をどう管理すべきか悩んでいました。

Qiitaで「Seed Fu」というgemを見つけ、初めて使ってみたところ非常に便利だったので、学習記録も兼ねて記事にまとめます。

マスタデータは頻繁に更新されない反面、環境構築時に確実に登録されていてほしいデータです。
この記事では、初めてSeed Fuを使ってRailsアプリにデータを安全に・自動で登録するやり方を行ったので記事を残していきます。

なぜSeed Fuを使うのか?

  • rails db:seed に統合できるらしい
  • seed_once を使えば、既存レコードを上書きせず安全に初期データを登録できるらしい
  • データを db/fixtures に分けて管理でき、見通しが良く保守しやすいらしい
  • 初学者にもシンプルな記法で扱いやすい

環境

  • Ruby 3.x
  • Rails 8.0.2
  • Seed Fu 2.3.x

1. Seed Fuの導入

Gemfile に以下を追記します:

gem 'seed-fu'

インストールする

bundle install

2. マスタデータ用のfixtureファイル作成

まずdb/fixturesフォルダを作成(なければ)

mkdir db/fixtures

次に、情報を定義するファイルを作成
db/fixtures/departments.rb

Department.seed_once(:id) do |s|
  s.id = 1
  s.name = 'サッカー'
end

Department.seed_once(:id) do |s|
  s.id = 2
  s.name = '野球'
end

Department.seed_once(:id) do |s|
  s.id = 3
  s.name = 'バスケットボール'
end

Department.seed_once(:id) do |s|
  s.id = 4
  s.name = 'バレーボール'
end

Department.seed_once(:id) do |s|
  s.id = 5
  s.name = 'テニス'
end

Department.seed_once(:id) do |s|
  s.id = 6
  s.name = '卓球'
end

Department.seed_once(:id) do |s|
  s.id = 7
  s.name = 'ラグビー'
end

Department.seed_once(:id) do |s|
  s.id = 8
  s.name = '柔道'
end

Department.seed_once(:id) do |s|
  s.id = 9
  s.name = '水泳'
end

Department.seed_once(:id) do |s|
  s.id = 10
  s.name = '陸上競技'
end

Department.seed_once(:id) do |s|
  s.id = 11
  s.name = 'スキー'
end

Department.seed_once(:id) do |s|
  s.id = 12
  s.name = 'スケート'
end

Department.seed_once(:id) do |s|
  s.id = 13
  s.name = 'ゴルフ'
end

3. db/seeds.rb に追記

# db/seeds.rb
SeedFu.seed

4.データ登録の実行

rails db:seed

出力例

== Seed from db/fixtures/departments.rb
 - Department {id: 1, name: "サッカー"}
 - Department {id: 2, name: "野球"}
 - Department {id: 3, name: "バスケットボール"}
 - Department {id: 4, name: "バレーボール"}
 - Department {id: 5, name: "テニス"}
 - Department {id: 6, name: "卓球"}
 - Department {id: 7, name: "ラグビー"}
 - Department {id: 8, name: "柔道"}
 - Department {id: 9, name: "水泳"}
 - Department {id: 10, name: "陸上競技"}
 - Department {id: 11, name: "スキー"}
 - Department {id: 12, name: "スケート"}
 - Department {id: 13, name: "ゴルフ"}

5.DBを確認

rails c
Department.all.pluck(:id, :name)

学び

Seed Fuを使うことで、初期データの一元管理・環境構築時の自動化・既存レコードの上書き防止が簡単に実現できるそうです。

  • seed_onceを使えば「一度だけ登録」で安全に運用できることを知りました
  • db/fixturesフォルダでデータを管理すれば、見通しがよく、チーム開発でも扱いやすいと知りました
  • rails db:seedに統合できるので、他の開発者とも同じ手順で初期データが扱えると知りました

今回は「スポーツ種目マスタ」の登録で試しましたが、例えば「大会カテゴリ」「トレーニングメニュー一覧」など、他のスポーツ関連のマスタデータにもこの仕組みを展開していくことができそうです。
私のような、マスタデータの扱いに困っているRails初学者にとって勉強になるものでした。
特に「一度だけ登録(seed_once)」「データの見通し管理」「rails db:seed に統合できる」点が、大きな学びになりました。
今後も活用しながら、データ設計や運用の理解を深めていきたいと思います。


初学者のため、間違えていたらすいません。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?