LoginSignup
1
0

More than 3 years have passed since last update.

Railsのサンプルユーザーをseeds+Fakerで用意する

Posted at

Rails開発やRspecのテスト時にサンプルのユーザーを数十人用意したり、
管理者を作ったりするのはよくある事かと思います。(たぶん)

しかし、名前を自分で考えたりアプリを作る度に書くのは面倒なので、自分用にseeds修正までの手順を残しておきます。

環境

MacOS Catalina
Rails 6.0.3.2
Ruby 2.6.3
mysql 8.0.22

gemを導入する

Gemfileに下記を追記します。

Gemfile
group :development, :test do
  gem 'faker'
end

忘れずに、bundle installします。

bundle install

準備は以上で完了です。

seedsファイルを修正する

db/seeds.rb

# 管理者ユーザー作成
User.create!(name:  "AdminUser",
  email: "admin@example.com",
  password:  "12345678",
  password_confirmation: "12345678",
  admin: true)

# ゲストユーザー作成
User.create!(name:  "GuestUser",
  email: "guest@example.com",
  password:  "12345678",
  password_confirmation: "12345678",
  guest: true)

# ユーザー作成
1.upto(49) do |i|
  name  = Faker::Name.name
  email = "sample-#{i}@example.com"
  password = 'password'
  User.create!(name: name,
                email: email,
                password: password,
                password_confirmation: password,
                confirmed_at: Time.zone.now,
                confirmation_sent_at: Time.zone.now)
end

上記例では、管理者ユーザー/ゲストユーザー/サンプルユーザー50人を作成しています。
サンプルユーザーの名前は、Fakerが用意しているダミーの名前になります。
他にもメールアドレスや職業なんかをFakerで作るのもアリですね。

データを作る

ターミナル
rails db:seeds

seedsコマンドで、seeds.rbに書いたデータがDBに用意されます。
DBのデータを丸ごとseedsのデータにしたい場合は、「rails db:reset」でDBごと置き換わります。
(ただし、全てのテーブルのデータが消えるので注意)

Fakerの使い方

Rubyファイル内で Faker::[ジャンル].[タイトル等] を入力すればOK。
上記seedsファイルの例にもありますが、例えばユーザーの名前を作りたい場合下記のように書けます。

Faker::Name.name

使いたいサンプルデータの一覧は、Faker公式のリファレンスで確認が可能です。
事前に使いたいデータがどんなデータが知りたい場合、Railsコンソールで確認しておくのがラクです。

rails c
Loading development environment (Rails 6.0.3.2)
[1]pry(main)> Faker::Name.name
=> "佐野 陽斗"

Fakerデータの日本語化について

Fakerは、デフォルトでは英語のデータしか利用できません。
日本語を利用する場合は、i18nを利用し日本語化すればOKです。

日本語化の手順は、下記の記事が参考になりました!
[初学者]Railsのi18nによる日本語化対応

終わりに

ラクにサンプルデータが用意できて、Fakerマジで最高である。

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