技術

[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

【ionic 1.2】Native Scrolling

どうも中田です。 2015/12/10にionicの1.2が出ました! http …

no image

[Angular]ng-forでオブジェクトを回してkeyとvalueを取得する。

AngularのディレクティブであるngForで以下のように、オブジェクトを回そ …

[Xcode]Provisioning Profileの中身を確認する方法

こんにちは。たなかです。 以前『[Xcode]Provisioning Prof …

no image

【Grunt】楽々デプロイ(grunt-rsync)

どうも、中田です。 gruntでアプリをデプロイするときにどうやったらいいかぁ〜 …

自分のEvernoteをブログとして公開できる『Postach.io』を使ってみました

こんにちは。たなかです。 自分のEvernoteをブログとして公開できる『Pos …