3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】ダーミーデータ投入にseed.rbは使わない

Last updated at Posted at 2017-04-22

そもそもseed.rbの役割とは?

よくダミーデータの投入する方法の記事を目にするが、ほとんどがseed.rbを使っている。
ただし、seed.rbは基本的に初期データをテーブルに追加したいときなどに使うものであって、ダミーデータを投入するためのものではない。

実装

ゴール

bin/rails db:dummy_dataというコマンドでdbにダミーデータを投入できるようにする。

ダミーデータ生成プログラム

db/ディレクトリ以下にdummy_data.rbを作成する。
基本的に、dummy_data.rbファイル内にダミーデータ生成プログラムを記述する。

以下の例はUserモデルに対して、ダミーデータを投入するプログラムになっている

db/dummy_data.rb
def users
  2.times do |index|
    name = Faker::Name
    last_name = name.last_name
    first_name = name.first_name

    User.create(
    last_name: last_name,
    first_name: first_name,
    username: "example_worker#{index+1}",
    email: "example#{index+1}@example.com",
    password: 'foobar123',
    password_confirmation: 'foobar123',
    activated: true
    )
  end
end

users

※ 細々としたプログラムについての説明は省略

ただし、これだけではdb:seedのようなコマンドがないので、実際に開発環境上のdbにデータを生成することはできない。

タスク実行の設定

lib/tasks/ディレクトリに、dummy_data.rakeファイルを作成する。

lib/tasks/dummy_data.rake
namespace :db do
  task dummy_data: :environment do
    load(File.join(Rails.root, 'db', 'dummy_data.rb'))
  end
end

上記のタスクを設定することで、
bin/raisl db:dummy_dataをターミナルで実行することができ、作成したダミーデータ生成プログラムが実行される。

これで無事、ダミーデータの生成とDB投入が成功する。

まとめ

正直、seed.rbやseed-fuでダミーデータ生成(投入)してもよくね?という声が多数なきはするが、
僕としては、わけて考えたい。というより、用途が別なのだからわけて考えるべきであると思っている。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?