LoginSignup
2
1

More than 3 years have passed since last update.

【超かんたん】Fakerを使ってダミーデータを作成しよう!

Last updated at Posted at 2021-03-01

Fakerを利用してアプリにダミーデータ生成します。
今回は、deviseで作成したusersテーブルにダミーデータを投入していきます。

Fakerとは

Fakerとはランダムな値を生成してくれるGemです。人名、メールアドレス、パスワードの生成はもちろんのことゲームのタイトルやアニメのキャラクター名なども生成してくれる遊び心がいっぱい詰まったGemです。

では、さっそく使って行きましょう!

Fakerの導入

gamのインストール

Gemfile
gem 'faker'
ターミナル
bundle install

導入完了。

ダミーデータの生成

今回は、deviseで生成されるemailとpasswordの他にnameカラムを追加しています。

deviseで生成されるemailカラムには一意性制約があるのでFaker::Internetfree_emailの間にuniqueと記述しています。

passwordもデフォルトでは6文字以上でないと登録できないのでmin_length: 6と記述しています。この辺りはご自身が制作するアプリの仕様によって適宜変更していきましょう。

db/seeds.rb
50.times do
  name = Faker::Name.name
  email = Faker::Internet.unique.free_email
  password = Faker::Internet.password(min_length: 6)

  User.create(
    name: name,
    email: email,
    password: password,
    password_confirmation: password
  )
end
ターミナル
rails db:seed

それでは確認してみましょう。
user.jpg

ダミーデータが生成されています。

日本語化してみよう

Fakerは一部、日本語対応しています。

日本語化はとても簡単です。
config/application.rbにconfig.i18n.default_locale = :jaという記述を追加するだけです。

config/application.rb
module アプリ名
 class Application < Rails::Application
   # Initialize configuration defaults for originally generated Rails version.
   config.load_defaults 6.0
   config.i18n.default_locale = :ja #追加
   # 省略
 end
end
ターミナル
rails db:seed

user2.jpg
日本語化完了。

番外編

ここからは番外編です。
ダミーデータの名前を変更してみましょう。
詳しくは公式ドキュメントを参照しましょう。

まずはja.ymlファイルを作成します。

ターミナル
touch config/locales/ja.yml

こちらの記述を作成したja.ymlにコピペし日本語化しましょう。
※日本語化できるのは一部だけです。

ポケモンの場合

db/seeds.rb
50.times do
  name = Faker::Games::Pokemon.name #変更
  email = Faker::Internet.unique.free_email
  password = Faker::Internet.password(min_length: 6)

  User.create(
    name: name,
    email: email,
    password: password,
    password_confirmation: password
  )
end
ターミナル
rails db:seed

p.jpg

スーパーマリオの場合

db/seeds.rb
50.times do
  name = Faker::Games::SuperMario.character #変更
  email = Faker::Internet.unique.free_email
  password = Faker::Internet.password(min_length: 6)

 #以下略
ターミナル
rails db:seed

ま.jpg

ドラゴンボールの場合

db/seeds.rb
50.times do
  name = Faker::JapaneseMedia::DragonBall.character #変更
  email = Faker::Internet.unique.free_email
  password = Faker::Internet.password(min_length: 6)

 #以下略
ターミナル
rails db:seed

d.jpg
こちらは日本語対応していないみたいです。

以上になります。

2
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
2
1