【Rails入門】seedの使い方まとめ

こんにちは!フリーランスの桃太郎です。

Railsにて開発を進める際に、処理が正しく動いているか確認するために、データベースにデータを用意しておくことが多々あります。

そのようなデータを用意する仕組みとしてRailsではseeds.rbファイルを利用します。

この記事では、

・seedとは

という基本的な内容から、

・1件ごとにデータを入れる方法

・CSVデータを入れる方法

など応用的な内容についても解説していきます。

seedの使い方について正しく理解し、必要な場面で使いこなすことができるように、わかりやすく解説します!

seedとは

seeds.rbファイルはどこに存在しているかをまず確認しましょう。

seeds.rbを最初に開くとコメント以外は何も記述がないかと思います。

ここにデータベースへのデータ投入の処理を追記していき、railsコマンドを実行することでデータベースに初期データとしてデータが投入されます。

データ投入の処理はいくつかあり、create文やRubyスクリプトなどを利用して記述することが可能です。

次の章からは具体的な使い方を解説します。

seedの使い方

データ投入と一言でいっても投入するデータ件数に応じて投入方法を使い分けると良いことを解説していきます。

1件ごとにデータを入れる方法

まずは1件づつ小規模のデータを入れる場合です。

プログラミング教室のレッスン情報を格納するためのlessonsテーブルがあり、そこに初期データを投入するケースを考えます。

lessonsテーブルはtitle,date,placeの3つのカラムで構成されているとします。

seeds.rbファイルを以下の通りに修正します。

その後、コンソールにて以下のコマンドを実行するとDBに反映されます。

データが正しく反映されているかrails dbコマンド及びselect文で以下の通りに確認してみましょう。

[実行結果_テーブルの中身を確認]

確かにデータが投入されていることがお分り頂けたかと思います。

まとめますと、1件づつ小規模なデータを投入する際は以下の構文をseeds.rbに記載し、rails db:seedコマンドを実行する手順となります。

大量にデータを入れる方法

次に大量データの場合です。

投入するデータが100件、1000件となると、上記のような記述方法では途中で間違った内容があっても気づきにくいデメリットがあります。

そのため大量データの場合はRubyスクリプトを使用して投入処理を作成します。

まずはサンプルをご確認ください。

前提として、lessonsテーブルに紐づくcategorysテーブルがあり、category_idを1〜100まで割り振ったデータを投入するケースを考えます。

[seeds.rbの内容]

上記内容でファイルを更新したのちに、rails db:seedコマンドを実行すると100件のデータが投入されていることが確認できます。(0〜99)

CSVデータを入れる方法

例えば、都道府県の政令指定都市の情報や既存の会員情報などがすでに存在している場合、そのデータをCSV形式のファイルにして、seeds.rbにて読み込むことも可能です。

例のごとくサンプルと合わせて確認していきましょう。

郵便番号と地方名の2つの情報をもつpostsテーブルを用意し、郵便局のサイトで無料ダウンロードできる郵便番号のCSV情報を先ほどの2つだけ加工し、db/post.csvとして配置しました。

その上で、seeds.rbファイルを以下の通りに更新し、rails db:seedコマンドを実行します。

そうしますと、csvのデータが正常にデータベースに登録されていることが確認できます。

ポイントは、csvファイルのカラムそれぞれをインデックス([0]や[1])で対応するデータベースのカラムにセットしているところです。

このようにして、CSVファイルのデータも手軽に投入することが可能です。

まとめ

本記事でseedついて初期データを投入するためのものであること、そして、そのデータの量に応じて投入する処理の書き方を使い分けることについてご紹介しました。

システムの運用前に初期データとなるマスターデータ(あらかじめ用意するベースとなるデータ)を投入したり、開発段階で動作確認のために初期データを投入する機会は多いかと思います。

もし、今後seedについて使い方に迷うことがあれば、ぜひこの記事を思い出して下さいね。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

湯浅 桃太郎

湯浅 桃太郎

20代は役者、30代はエンジニア、そして40代を迎えた現在、Webライターとして活動しながら、3人の息子たちの家庭教育、アンチエイジングなどにも力を入れて日々ノマドライフを楽しんでいます。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説