技術

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

関連記事

[Angular6] Angularのユニットテストでprivate変数を読み込む

Angularでテストコードを書いている時、component側で定義しているp …

[Xcode] The executable was signed with invalid entitlements. でアプリを実機確認できない!

こんにちは。たなかです。 作ったiOSアプリを実機確認したくて、Xcodeからデ …

no image

【ionic】FBログイン時にSafari認証になってしまう

どうも中田です。 ionicでFacebookログインを実装した時に、 Nati …

no image

ng-ifのelse句でコンポーネントのプロパティと名前重複

こんにちは、コーテッグのこやまです。 Angularを触っていたら、コンポーネン …

no image

【gem/bundle】あんたたち一体どういう関係なのよ!!

どうも中田です。 今回はgemとbundleの話。 前置き よくあるgemの説明 …