web-dev-qa-db-ja.com

保存する前に確認通知をスキップする

Rails 4.2.0では、認証にDevise gemを使用しています-devise 3.4.1

ユーザーが作成されるとすぐに確認メールが送信されます。この確認メールをスキップして、確認リンクを含むカスタムメールを送信する必要があります。この問題の解決を手伝ってください。

:confirmableはUserモデルで使用されます。

19
Shruthi R

あなたはこれを試すことができます

@user.skip_confirmation!
@user.save

ユーザーレコードを保存する前にskip_confirmation!を呼び出します。

確認通知のみをスキップするには、skip_confirmation_notification!を使用できます

@user.skip_confirmation_notification!
@user.save

お役に立てれば!


追加

変数を作成せずに同じ行で確認をスキップしたい場合で、その特定のユーザーを確認する必要がない場合(例:seeds.rb):

User.create(email: "#{role_name}@example.com",
            password: 'password',
            password_confirmation: 'password',
            confirmed_at: Time.now.utc, # skip confirmation)
33
Rajdeep Singh

Deviseのビルド内確認メールを無効にしてカスタムメールを送信する代わりに、deviseの確認メールをカスタマイズできます。を使用してデバイスビューファイルを生成できます。

Rails generate devise:views

確認メールをカスタマイズします。

2
bunty

あなたはこれを行うことができます:

これはUserController

@user = User.new(email: "#{role_name}@example.com",
        password: 'password',
        password_confirmation: 'password',
        confirmed_at: Time.now.utc) # skip confirmation
@user.skip_confirmation!
@user.confirm
if @user.save
  MyMailer.confirmation(@user)
else
  # your implementation
end

ドキュメントを参照してください https://github.com/plataformatec/devise/wiki/How-To:-Use-custom-mailer