今回はRailsで開発を行っていく中で、便利な機能seedファイル
の使い方について解説していきます。
きっと便利に開発を進められるので、参考にしてみてください。
#seedファイルとは
開発段階のデータ作成方法として、実際にcreate機能を実装してからアプリを操作してデータを作る方法やrails c
からデータを作成する方法などがありますが、どちらも大量のデータを作ろうとすると正直めんどくさいです。。
そこで使われるのがseedファイル
です。
seedファイルのメリットとして、
- 開発段階で動作確認用に初期データを入れられる
- データベースをリセットしても、seedファイルに入っている初期データは再び使える
- 一度に大量のデータを作成できる
というメリットがありますので、開発するときに便利なので、知っておいて損のない機能となってます。
初期データとして管理者のデータも入れられるので、管理者が必須なアプリの場合は、使う場合が多いです。
#初期データ作成
では、実際に初期データを作っていきます。
seedファイルはデフォルトで搭載されていて、dbディレクトリ直下
のseeds.rb
にコードを記述していきます。
# Postモデルのデータを作る
Post.create!(
content: "てすとほげ",
user_id: 1
)
これで、Postモデルのcontentカラムが「てすとほげ」、user_idが1のデータが作成できます。
記述できたらデータベースに反映させます。
$ rails db:seed
コマンド実行後、rails cで確認してみましょう。
$ rails c
001 > Post.all
:
作成したデータが確認できたら、反映できています。
#複数のデータを作成
1つのデータを作成することができましたので、複数のデータを作りたいときはこの記述を何個も作っていったらいいのね、、、
# Postモデルのデータを作る
Post.create!(
content: "てすとほげ",
user_id: 1
)
Post.create!(
content: "てすとほげ2",
user_id: 1
)
Post.create!(
content: "てすとほげ3",
user_id: 1
)
:
とてもDRYなコードとは言えないですよね
複数のデータを作りたいときは、timesメソッド
を使うと一括でデータが作成できます。
# 一括で10個のユーザーデータを作成
# 10回繰り返し処理を行う
10.times do |n|
User.create!(
# n + 1で数字が重複しないようにする
email: "test#{n + 1}@test.com",
name: "テストユーザー#{n + 1}",
password: "testhoge"
)
end
これで、userが10個作成できます。
バリデーションでユニークを指定している場合はn + 1
でデータが重複しないようにしておきます。
では、データベースを反映させて、rails cで確認してみてください。
$ rails db:seed
$ rails c
001 > User.all
:
#データベースのリセット方法
今あるデータを削除して初期データを入れたいなど、データベースをリセットしたい場合の処理をお伝えしておきます。
データベースをリセットする場合は、以下のコマンドを実行します。
$ rails db:migrate:reset
これで、データベースがリセットされたので、seedファイルの初期データを投入していきます。
rails db:seed
これで、記述していた初期データが反映されました。
#まとめ
seedファイルは、管理者や一括でデータを入れたい場合に非常に便利な機能です。
seedファイルをうまく使って、開発を進めていきましょう!