技術

[Rails]rake db:seedに成功しているのにuserテーブルにデータが作成されない!

投稿日:

こんにちは。たなかです。

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……奥が深いっす。
短いですが今回はここまで。

参考サイト

https://qiita.com/dayone80/items/8eb903fcf083b30a17a4

-技術
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

画像生成マシーン「MakeGirlsMoe」の10連結果

女の子の萌え画像を作ってくれる「MakeGirlsMoe」なるものが作られたよう …

no image

[Angular] リアクティブフォームの値をtsファイルで設定する。

こんにちは、コーテッグの小山です。 Angularのリアクティブフォームについて …

[ Rails ]ActiveRecord::RecordInvalidで怒られ、saveができない!

こんにちは。たなかです。 新しいプロジェクトの参画が決まって、今はrailsを書 …

Angularでセレクトボックスに色をつけたいとき

こんにちは。コーテッグのこやまです。 Angularでセレクトボックスが特定の値 …

[XCode] clang: error: linker command failed with exit code 1

どうも中田です 本日はシンプルに。 XCodeでbuild時に発生しました。 エ …