Ruby on Rails開発において、db/seeds.rb
ファイルは、アプリケーションの初期データをデータベースに投入するための重要な仕組みです。開発環境をセットアップする際のテストデータや、本番環境で必要となるマスターデータ(カテゴリ一覧、都道府県一覧など)を定義するために使用されます。
この記事ではマスターデータをDBに保存する方法をまとめます。
レコード作成時の流れ
下記の流れでレコードを作成します。
- seeds.rbに作成したいレコードを記載
- db:seedコマンドで実行
seed.rbに入れたいデータを記載
通常のRailsアプリケーションでレコードを作成するのと同じように、Active Recordのメソッド(.create
, .create!
, .new
+ .save
など)を使用します。
db/seeds.rb
Post.create(title: '最初の投稿', content: 'これは最初の投稿です。')
上記でレコードをdbに一つ作成できます。
コマンド
コマンドは下記を打ちます。
rails db:seed
注意1:冪等性(べきとうせい)を担保する
rails db:seed
コマンドは何度でも実行される可能性があります。そのため、コマンドを複数回実行しても、データが重複して作成されたり、意図しない状態になったりしないように**冪等性(Idempotence)**を保つことが非常に重要です。
find_or_create_by
メソッドを使うと、特定の条件でレコードを検索し、存在しない場合のみ新しいレコードを作成できます。