railsでseedsからdbにデータをセットする

目次

マーケター、エンジニアを月1時間からジョインできるプラットフォーム

airteamは月1時間からマーケターやエンジニアに相談できるプラットフォーム。 雇うのはハードル高いけどプロをチームに入れたい。そんな経営者のためのサービスです。 相談にのる方も募集しています。

タスクなしだから月一時間からジョイン可能

作業はなくオンライン相談メイン。 月1時間からさっと経験者に継続的に相談できます。

多様な経験者を雇用するより何倍も早くチームに

あらゆるジャンルの経験者がいるので あなたのチームのノウハウの選択肢が広がります。

NDAはすでに締結済み、契約もスムーズ

契約の煩雑なやりとりはなく、NDAはすでに締結済み、書面のやりとりはありません。

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 メソッドを使うと、特定の条件でレコードを検索し、存在しない場合のみ新しいレコードを作成できます。