seedデータとは
初期データやテストデータのことで動作確認用データを登録する目的で行います。投入したいデータの件数が増えた場合にもこれさえあれば迅速に投入できる環境を構築することができます。
seedデータの投入方法
Railsには投入用機能があります。一度ソースコードを記述してしまえばdb/seeds.rbやrails db:seedコマンドにより投入することができます。下記のような感じで記述します。
1 2 3 |
モデル名.create(id: XX ,カラム名2: 'XX',カラム名3: 'XX') モデル名.create(id: XX ,カラム名2: 'XX',カラム名3: 'XX') モデル名.create(id: XX ,カラム名2: 'XX',カラム名3: 'XX') |
例:User.create(id: 1,name: 'tanaka',age: 23)
大量データを用意する場合
大量データを用意する場合は下記のように記述して記述の効率化を測ったりもします。(例では100件のデータを用意する場合)
1 2 3 |
(1..100).each do |i| Board.create(name: "名前#{i}",age: "年齢#{i}") end |
環境ごとに投入するデータを変えたい場合
例えば開発環境のみという形で環境ごとに投入するデータをフィルタしたい場合は下記の記述をします。誤ったデータの投入を防ぐことができたりします。
1 2 |
if Rails.env == 'development' end |
現実的には、「db/seeds」の下に「development」、「test」、「production」などとフォルダを切って分けると良いでしょう。
seedデータの投入
下記コマンドを実行します。
1 |
rake db:seed |
dockerを使用している場合は下記になります。
1 |
docker-compose exec web bundle exec rake db:seed |
それ以外にもデータを用意する方法
Railsにはseed以外にもSQLやマイグレーション、Factory Botや代替するGem等、様々なテストデータを準備するための仕組みが用意されているので状況に合わせて使いやすいものを利用するようにしましょう。
注意点
テストデータ自体は一度最初に用意してしまったら必要がなくなるためプロジェクトの中では放置されやすい分野になります。DB構造が変わることもあれば、データの持ち方が変わる可能性もあり後のメンバーのためにメンテナンスをしっかりしていくようにしましょう。
faker
ダミーデータを作れるGemです。
インストール
1 2 3 |
group :development do gem 'faker' end |
構文
1 |
Faker::[ジャンル].[タイトルなど] |
どんなジャンルがあるか調べるには?
githubの以下のページに行けば一覧で使えるジャンルのクラスが記載してあります。
1 |
https://github.com/faker-ruby/faker |
例
Movie
1 2 3 4 5 6 |
irb(main):003:0> Faker::Movie.title => "Star Wars: Episode II – Attack of the Clones" irb(main):004:0> Faker::Movie.title => "The Intouchables" irb(main):005:0> Faker::Movie.title => "Hotel Rwanda" |
Pokemon
1 2 3 4 |
irb(main):017:0> Faker::Games::Pokemon.name => "Graveler" irb(main):018:0> Faker::Games::Pokemon.name => "Nidorina" |
Book
1 2 3 4 |
irb(main):027:0> Faker::Book.title => "Mother Night" irb(main):028:0> Faker::Book.title => "All the King's Men" |
日本語化
1 2 3 4 5 |
Faker::Config.locale = :ja irb(main):044:0> Faker::Address.city => "新井郡" irb(main):045:0> Faker::Address.city => "陸町" |
実務を意識するなら
実務で実際に使うなら以下のようなデータが使えるでしょう。
- 住所
- 名前
- メールアドレス
この記事へのコメントはありません。