シードデータの作成方法 [ 自分用メモ ]


シードデータの作成は、db/seeds.rbファイル内にRubyコマンドを記載する。

※ DEVISEのusersテーブルの場合

手順1
db/seeds.rb

100.times do |n|
User.create(
name: "Hoge Fuga#{n}",
email: "hogehoge#{n}@example.com",
password: "hogefuga",
uid: "11111#{n}",
provider: "Facebook",
confirmed_at: "2016-03-22 08:52:03.98286#{n}"
)
end

※uid: "11111#{n}"については、ユニーク(一意)なので、#{n}(←1~100が入る)を入れること

手順2
rake db:seed

・ここで、#{n}を使うことでダブルクォーテーションで囲われた文字列内に、任意のRubyの式を埋め込むことができる。

・usersテーブル(DEVISE)は、emailが重複してはならないように制御がかかっている。そのため、ここでは、"hogehoge#{n}@example.com",で1~100まで数字が自動的につくように式を入れた。

・なお、Devise用に作成したusersテーブルにシードデータを投入する際には、「password」を指定して作成する。元々、Deviseで使うusersテーブルには「encrypted_password」カラムが作成されている。しかし、これは暗号化された状態の文字列を格納するためのもの。その暗号化をする元になるのが、画面上の入力フォームに入力された値「password」となっている。この「password」を使い自動的に暗号化して「encrypted_password」に格納している。