##seedsファイルとは
初期データを生成してくれるファイルのことで、簡単にテストデータを作ったりできる。
##記入方法
#通常の場合
User.create(name: "Taro")
User.create(name: "Hanako")
#配列の場合
users = User.create([{name: "Taro"}, {name: "Hanako"}])
#大量のテストデータの場合(この場合は100回繰り返す)
100.times do |n|
User.create(title: "test{n}人目", content:"test!#{n}回目")
end
内容を記入し終わったら、rails db:seed
のコマンドを実行。
##Faker
このFakerを使うと、実在しそうなデータを生成してくれるgemがあるのでその手順や記入法も記載しておく。
Gemfile
gem 'faker'
↑この文を追加後、bundle installを入力。
記入法
10.times do
User.create(
first_name: Faker::Name.first_name,
last_name: Faker::Name.last_name,
email: Faker::Internet.email,
password: 'abcde',
password_confirmation: 'abcde'
)
end
20.times do |n|
Board.create(
user: User.offset(rand(User.count)).first,
title: "タイトル#{n}",
body: "本文#{n}"
)
end
上記のFakerで作成される人名は日本語設定になっていると、日本語の名前になったりする。
User.offset(rand(User.count)).first
offsetメソッドは、データの取得開始位置を指定する。
randメソッドは整数値を与えると、0からその整数値未満の整数を返す。
なので、User.offset(rand(User.count)).first は、ユーザーの数の中から(例えば10だとすれば、0から9)ランダムに数字を生成し、ユーザーテーブルのデータ取得開始位置を決めて、その最初のユーザーデータを返すように指示する。
##参考記事
[Fakerを使ってダミーデータを作る【Day 8/30 2nd】]
(https://note.com/kentarotawara/n/n240bf41b5a54)
seeds.rbの使い方