Fakerを利用してアプリにダミーデータ生成します。
今回は、deviseで作成したusersテーブルにダミーデータを投入していきます。
Fakerとは
Fakerとはランダムな値を生成してくれるGemです。人名、メールアドレス、パスワードの生成はもちろんのことゲームのタイトルやアニメのキャラクター名なども生成してくれる遊び心がいっぱい詰まったGemです。
では、さっそく使って行きましょう!
Fakerの導入
gamのインストール
gem 'faker'
bundle install
導入完了。
ダミーデータの生成
今回は、deviseで生成されるemailとpasswordの他にnameカラムを追加しています。
deviseで生成されるemailカラムには一意性制約があるのでFaker::Internetとfree_emailの間にuniqueと記述しています。
passwordもデフォルトでは6文字以上でないと登録できないのでmin_length: 6と記述しています。この辺りはご自身が制作するアプリの仕様によって適宜変更していきましょう。
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
ダミーデータが生成されています。
日本語化してみよう
Fakerは一部、日本語対応しています。
日本語化はとても簡単です。
config/application.rbにconfig.i18n.default_locale = :jaという記述を追加するだけです。
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
番外編
ここからは番外編です。
ダミーデータの名前を変更してみましょう。
詳しくは公式ドキュメントを参照しましょう。
まずはja.ymlファイルを作成します。
touch config/locales/ja.yml
こちらの記述を作成したja.ymlにコピペし日本語化しましょう。
※日本語化できるのは一部だけです。
ポケモンの場合
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
スーパーマリオの場合
50.times do
name = Faker::Games::SuperMario.character #変更
email = Faker::Internet.unique.free_email
password = Faker::Internet.password(min_length: 6)
#以下略
rails db:seed
ドラゴンボールの場合
50.times do
name = Faker::JapaneseMedia::DragonBall.character #変更
email = Faker::Internet.unique.free_email
password = Faker::Internet.password(min_length: 6)
#以下略
rails db:seed
以上になります。