こんにちは。たなかです。
railsで開発してて、seedファイルがうまく流し込めない症状で躓いたので備忘録的にメモです。
症状
seedファイルを作成し、rails db:seedでダミーデータの流し込みを行います
root@1f60d27bd094:~# rake db:seed
root@1f60d27bd094:~#
エラーもなく成功してるっぽいです。
sequel Proで確認してみます。
空っぽです……なぜなんだ!
解決方法
deviseで作成されたusersテーブルにseedsでユーザーを生成するときは、
書き方に注意しなければならない!
seedファイルを以下のように書いていましたが…
User.create(:email = 'xxx@xxx.com', :encrypted_password = 'xxxxxxxxxxxxxxxxxxx')
以下のように書き換える必要がありました!
users= [ { username: 'kanritarou', email: 'kanri1@yahoo.com', password: 'test1' }, { username: 'kanrijirou', email: 'kanri2@yahoo.com', password: 'test2' }, ] users.each do |record| User.create!(record) unless User.find_by(email: record[:email]) end
まとめ
「encrypted_password」はあくまで、暗号化された文字列を格納しておくカラム。
seedの流し込みであっても、「password」として入力したものを自動的に暗号化してから格納するという手順が必要なようでした。
devise……奥が深いっす。
短いですが今回はここまで。