it-swarm.com.de

Rails 4 - Devise, Bestätigungsbenachrichtigung überspringen: after_create

In Rails 4.2.0 verwende ich den Devise-Edelstein zur Authentifizierung - devise 3.4.1.

Die Bestätigungs-E-Mail wird gesendet, sobald ein Benutzer erstellt wurde. Wir müssen diese Bestätigungs-E-Mail überspringen und eine benutzerdefinierte E-Mail mit dem Bestätigungslink senden. Bitte helfen Sie mir, dieses Problem zu lösen.

:confirmable wird im Benutzermodell verwendet.

15
Shruthi R

Sie können es versuchen

@user.skip_confirmation!
@user.save

Rufen Sie skip_confirmation! auf, bevor Sie den Benutzerdatensatz speichern.

Um nur die Bestätigungsbenachrichtigung zu überspringen, können Sie skip_confirmation_notification! verwenden.

@user.skip_confirmation_notification!
@user.save

Hoffe das hilft!


In Ergänzung

wenn Sie die Bestätigung in derselben Zeile überspringen möchten, ohne eine Variable zu erstellen, und Sie müssen diesen bestimmten Benutzer nicht bestätigen, z. B. in seeds.rb

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

Anstatt die eingebaute Bestätigungs-E-Mail von devise zu deaktivieren und Ihre benutzerdefinierte E-Mail zu senden, können Sie die Bestätigungs-E-Mail von devise anpassen. Sie können mit

Rails generate devise:views

und dann die Bestätigungs-E-Mail anpassen.

2
bunty

Du kannst das:

das kann der Usercontroller sein

@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

Siehe doc https://github.com/plataformatec/devise/wiki/How-To:-Use-custom-mailer