技術

[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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

【Android/ionic】これさえやればOK!アプリ公開への道

どうも、中田です。 ionicでHTML5/CSSハイブリッドアプリ開発してるん …

no image

CSSのpositionで要素を真ん中寄せにする(JS不要)

positionを使って要素を真ん中寄せにする時は、transform: tra …

no image

HTMLタグだけでアコーディオンを実装する

こんにちは htmlタグのdetailsというのは知っていますか? 僕も初めて知 …

go

【Golang】package strconvのintSize = 32 << (∧uint(0) >> 63)は何をしているのか

こんにちは Goのstrconvのパッケージを読んでたらintSizeというもの …

Webページまるごと画面キャプチャできるChromeの拡張機能「Full Page Screen Capture」

こんにちは。たなかです。 先日、チームのメンバーにスマホデザインのスクリーンショ …