前書き
今ユーザーを登録する際以下の流れで登録できるアプリを作成しています.
①ユーザー情報を仮登録⇨②ユーザーに本人確認のメール送信⇨③本登録
この流れのアプリにfakerでダミーデータを作成しようとした際下記のエラーが出力されたので忘却録として記事に残します。
以下のエラーが出力されました
Running via Spring preloader in process 7647 一部省略 rake aborted! Errno::EHOSTUNREACH: No route to host - connect(2) for [2404:6800:4008:c06::6c]:587
エラー経緯
まずダミーデータを作成しようとしました。
50.times do name = Faker::Name.name email = Faker::Internet.unique.free_email password = Faker::Internet.password(min_length: 6) User.create( name: name, email: email, password: password, password_confirmation: password, ) end
↓データベースにseedデータ登録実行
rails db:seed
エラー出力といった感じです。
エラーの意味
要はユーザーから確認メールの本人確認をしていないためユーザー登録できないようです。前書きの②の工程をしていないのでエラーが出力されています。
解決策(結論)
⇨下記のコードでデータ登録するとダミーデータ入りました。
50.times do name = Faker::Name.name email = Faker::Internet.unique.free_email password = Faker::Internet.password(min_length: 6) user = User.new( name: name, email: email, password: password, password_confirmation: password ) user.skip_confirmation! user.save! end
deviseのconfirmableがONだが、例外的に確認メールを飛ばすことなくユーザ登録する方法がありました.
そもそもどういう仕組みでメール送られる?
⇨confirmation.atというカラムがnilだったら確認メールを送るという仕組み出そうです。つまりconfirmation_atに何か値が入っているとメールが送られないみたいです。
そこで↓のメソッドconfirmation_atに値を入れてくれるみたいです。
skip_confirmation!