私はDeviseを使用して、ユーザーのサインアップも許可しています。また、自分のユーザー管理者を使用してユーザーを手動で作成しています。管理者でユーザーを作成すると、Deviseはすぐに新しいユーザーに確認を送信します。これは、デバイスと管理者の両方が同じモデルを使用しているためだと思います。管理者が送信する準備ができるまで、この電子メールを遅らせるにはどうすればよいですか?
さらに、Deviseの検証では、管理者が新しいユーザーのパスワードを設定する必要があります。手動で作成したユーザーが確認に応答するときに、自分のパスワードを指定することを強くお勧めします。現在、手動で作成されたユーザーは、補足の電子メールでパスワードを送信しない限り、パスワードを知りません。
これは、アプリの1つで行います。次のように、確認を自動的に配信しないようにDeviseに指示できます。
@user.skip_confirmation!
そして後で、あなたはすることができます
Devise::Mailer.confirmation_instructions(@user).deliver
Rails 2.xの場合、次のようにします。
DeviseMailer.deliver_confirmation_instructions(@user)
@ user.skip_confirmation!ユーザーを確認するため、ユーザーは確認を使用せずにログインできます。
これは、デバイス3.5で機能します
ユーザーの作成中に確認メールを送信するように工夫するのをやめてください。
@user.skip_confirmation_notification!
後で確認手順を送信する
@user.send_confirmation_instructions
解決策は@RyanHeneiseの答えほど単純ではありません。もしあなたがそうするなら @user.skip_confirmation!
ユーザーを確認するので、ユーザーは確認を使用せずにログインできるため、この場合の確認文字は役に立ちません。このソリューションでは、ユーザーが確認なしでログインすることはできません: 認証用のDeviseを使用したRails 3-手動でユーザーを作成するにはどうすればよいですか?
より簡単な方法があります(v2.2.4で追加されました)
Deviseの確認可能なモジュールに、完全なskip_confirmation_notificationが含まれるようになりました。よりクリーンなソリューションを可能にする方法:
@user = User.new params[:user]
@user.skip_confirmation_notification!
@user.save
# ... do stuff, then later...
Devise::Mailer.confirmation_instructions(@user).deliver
私はこれを調べるのに少し時間を費やしました、基本的にあなたはこれを追加してセットアップする必要があります delayed_job 。
def send_confirmation_instructions
generate_confirmation_token! if self.confirmation_token.nil?
::Devise.mailer.delay.confirmation_instructions(self)
end
これを保護されたメソッドとしてユーザーモデルに追加し、 確認可能 のデバイスをオーバーライドします。また、gemが更新され、新しいメソッドが追加されたことに注意してください 確認命令を送信するcreateでオーバーライドされます 。