📌

[rails]fakerを使用しseed fileの作成 ・作成したseed fileと初期からあるseed.rb

2023/03/20に公開

seedの作成(ダミーデータ)

開発段階で動作確認用に初期データを入れるために使用されるもの。
処理が正しく動いているか確認するために、DBにデータを用意しておく際に使用する。
[場所]DBフォルダの中にseed.rbがある!

=> 処理の確認で、作成中に自分で作って確認することや、
rails cで作成して確認することは不可能ではないが、
手間がかかるし大きい処理になればなるほど、できなくもなってくる。
よって、seedを使用した初期dataの挿入がいい!!!

seedファイルの使用メリット

  • 動作確認用に初期データを入れられる
  • 大量に作成可能
  • DBをリセットしてもseedに初期データがあるから使える

Faker

  • faker公式はこちらから
  • テスト用にダミーデータを生成するためのライブラリであり、Gemとして使用可能。
  • Faker Gemを使用すると、名前、アドレス、電話番号、Eメールアドレス、テキストなど、さまざまな種類のダミーデータを生成することが可能。

fakerを使用するメリット

  • ダミーデータを簡単に生成できるため、テストデータの作成が容易
  • 生成されたダミーデータはランダム性があるため、テストの信頼性が高まる
  • Fakerは、多くの言語に対応しているため、多言語対応のアプリケーションでテストデータを作成することができる
  • テストデータを手動で作成する必要がないため、開発者の時間を節約できる
  • Fakerはオープンソースのライブラリであるため、無料で利用することができる。
  • 開発者がライブラリを拡張することもできる。
    など!!

導入方法

1. gem fileにfaker追加

gem 'faker'

bundle install実行。

2. seed fileの作成

  • 初期からあるものとは別で、手動で作成していきます。
  • DB folderの中に、seedfolderを作成、その中にカスタムseedfileを作成。記述。
  1. Seed.rbに上記fileを記述
    今回user.rbを作成したとすると、
require_relative "seeds/users"
  • require_relativeメソッド:
    別のファイルに分割して記述した初期データを一つのファイルにまとめるために用いられる。

初期設定の seed file と、作成する seedfile の違い

どちらのファイルも、初期データをデータベースに挿入するために使用することは同じ!

手動で作成されたシードファイル:

カスタムの初期データを含むもの.特定のデータモデルの初期状態を設定する場合に使用。

ex. アプリケーションの特定の機能に必要なデータ
以下のように、"10個のランダムなユーザーと,それぞれに5つのランダムなポストを作成する"とか!

# db/seeds/users_posts.rb
10.times do
  user = User.create(
    name: Faker::Name.name,
    email: Faker::Internet.email,
    password: Faker::Internet.password(min_length: 8)
  )
  5.times do
    user.posts.create(
      title: Faker::Lorem.sentence,
      body: Faker::Lorem.paragraph
    )
  end
end

  • 初期からあるdb/seeds.rbファイル:
    アプリケーションの基本的な初期データを含むもの

ex. サイトの初期管理者アカウントの作成、初期ページやカテゴリーの作成
以下のように、管理者や初期の少数のカテゴリなど。
(⚠️これらのデータは、アプリケーションの開発者が手動で入力する必要がある)

# db/seeds.rb
# サイト管理者の初期アカウントを作成
User.create!(
  name: "Admin User",
  email: "admin@example.com",
  password: "password",
  password_confirmation: "password",
  admin: true
)

# カテゴリーを作成
Category.create!(name: "Technology")
Category.create!(name: "Sports")
Category.create!(name: "Food")

# 初期ページを作成
Page.create!(
  title: "Welcome to my app!",
  body: "This is my first Rails app. Thanks for visiting!",
  published_at: Time.now
)


Discussion