2011-01-04 4 views

Antwort

50

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

+1

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

+0

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

+0

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. –

9

Ich mag nur für die Zukunft hinzufügen, dass seit 2.2 Devise gibt es jetzt eine skip_confirmation_notification! Methode zur Verfügung, wie auch das im Grunde tut alles von Matheus' Post ohne die Methoden im Modell neu zu definieren.

Verwandte Themen