Rails開発やRspecのテスト時にサンプルのユーザーを数十人用意したり、
管理者を作ったりするのはよくある事かと思います。(たぶん)
しかし、名前を自分で考えたりアプリを作る度に書くのは面倒なので、自分用にseeds修正までの手順を残しておきます。
環境
MacOS Catalina
Rails 6.0.3.2
Ruby 2.6.3
mysql 8.0.22
gemを導入する
Gemfileに下記を追記します。
group :development, :test do
gem 'faker'
end
忘れずに、bundle installします。
bundle install
準備は以上で完了です。
seedsファイルを修正する
# 管理者ユーザー作成
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マジで最高である。