Die skip_confirmation!
Methode ist für jedes confirmable
Modell verfügbar.
@user = User.new params[:user]
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account
@user.save
Der Benutzeraccount wird jedoch aktiviert. Wenn Sie das nicht wollen, lesen Sie weiter.
Devise verwendet bedingte Rückrufe, um das Bestätigungs-Token zu generieren und die E-Mail zu senden. Die Callbacks werden nur aufgerufen, wenn confirmation_required?
true
zurückgibt. Neu definiert es auf Ihrem Modell:
def confirmation_required?
false
end
Dies wird jedoch macht die active_for_authentication?
Methode immer wahr zurück, weil es dauert, ob nicht eine Bestätigung Rechnung erforderlich ist. Wir müssen neu definieren, dass auch:
def active_for_authentication?
confirmed? || confirmation_period_valid?
end
Auf diese Weise wird das Konto bleibt inaktiv und keine Bestätigung E-Mail gesendet werden. Sie müssen den Benutzer manuell aktivieren, indem Sie im Datensatz aufrufen oder einfach confirmed_at
auf ein beliebiges Datum setzen.
Es ist ein ziemlicher Hack, aber es sollte funktionieren.
Zum Vergleich: confirmable.rb
danke. aber ich möchte nicht, dass sich der Benutzer einloggen kann. Wird der Benutzer zu bestätigen, den Benutzer zu einigen wie Login? Was wird das tun, nur verhindern, dass E-Mails gesendet werden? danke – AnApprentice
Auch wenn ich versuche, einen neuen Benutzer wie Sie oben zu speichern, bekomme ich FALSE auf @ user.save .... neben einer E-Mail, welche anderen Felder sind erforderlich, um einen Benutzer zu speichern? – AnApprentice
Ich habe meine Antwort aktualisiert. Alle Felder, die in Ihrem Schema nicht als null markiert sind oder für die Ihr Modell gültig ist, sind erforderlich. Wenn Sie sie nicht bereitstellen, wird Active Record Ihr Objekt nicht speichern. –