私はdeviseとfacebookを統合しました。ユーザーがFacebookアカウントでログインした後にユーザーアカウントを作成すると、
user = User.create(:email => data["email"],
:password => Devise.friendly_token[0,20])
user.confirmed_at = DateTime.now
user.save!
アカウントが確認された場合でも、確認メールが送信されます。メールの送信をオフにする方法はありますか?
確認コールバックは作成後に発生するため、confirmed_at
を手動で設定する前の例の1行目で発生しています。
コメントによると、最も正しいことは、この目的のために提供されているメソッド #skip_confirmation!
を使用することです。 confirmed_at
を手動で設定しても機能しますが、提供されているAPIを回避します。これは可能な場合は避ける必要があります。
だから、次のようなもの:
user = User.new(user_attrs)
user.skip_confirmation!
user.save!
元の回答:
confirmed_at
をcreate
引数とともに渡す場合、アカウントが既に「確認」されているかどうかのテストはその日付かどうかを確認するため、メールは送信されません。設定されています。
User.create(
:email => data['email'],
:password => Devise.friendly_token[0,20],
:confirmed_at => DateTime.now
)
または、new
の代わりにcreate
を使用して、ユーザーレコードを作成します。
メールを送信したくない場合は、#skip_confirmation_notification
、 そのようです:
user = User.new(your, args)
user.skip_confirmation_notification!
user.save!
ドキュメント を参照してください
After_create/after_updateの確認/再確認通知メールの送信をスキップします。 #skip_confirmation!とは異なり、記録にはまだ確認が必要です。