2017-03-15 4 views
0

Die Bestätigungsmail wird erneut gesendet, auch nach Bestätigung per E-Mail. Das Benutzerattribut "devise" unconfirmed_email ändert sich nicht in einen NULL-Wert, obwohl das Attribut "confirmed_at" die Uhrzeit anzeigt, zu der es bestätigt wurde.Devise Bestätigungsmail wird erneut gesendet

Ich bin mit Schienen 5 und entwickeln gem Version 4.2

Dies ist Bestätigung Controller

def create 
    begin 
    email = params[resource_name][:email] 
    rescue 
    email = "" 
end 
user = User.find_by_email(email) 
if poster and ["blocked", "deactivated"].include?(user.status) 
    poster.errors.add(:email, "has been #{user.status}") 
    self.resource = user 
    respond_with(self.resource) 
    return false 
end 
super 
end 

Diese Funktion E-Mail in den Registrierungen Controller überprüfen wird.

def verify_email 
    @user = User.find_by_confirmation_token(params[:token]) 
if @user 
    if @user.confirmed? 
    flash[:error] = "Your Account is already verified please try to login" 
    redirect_to new_poster_session_path 
    else 
    @user.confirmed_at = Time.now 
    #@user.confirmation_token = nil 
    @user.save 
    sign_in @user 
    token = Devise.friendly_token 
    current_user.update_attribute :current_sign_in_token, token 
    session[:sign_in_token] = token 
    redirect_to root_path 
    end 
else 
    @user = User.new 
    @company = Company.new 
    @city = City.new 
    #  @region = Location::Region.new 
    flash.now[:error] =  I18n.t("applicant.confirmations.invalid_or_expired_token") 
    flash[:regenerate_token] = I18n.t("applicant.confirmations.invalid_or_expired_token_regenerate", :path => new_user_confirmation_path) 
    respond_with_navigational(resource) { render :new } 
end 

Ende

Der obige Code funktioniert gut mit einem anderen Modell und da kein Fehler angezeigt wird. Ich weiß nicht, wie ich das anstellen soll. Bitte helfen Sie!

Antwort

1

Wenn dies der tatsächliche Code ist, haben Sie einen Fehler.

ändern Sie diese Zeile

user = user.find_by_email(email) 

zu dieser Linie

user = User.find_by_email(email) # use the class! 
+0

Sorry, meine schlechten, Tippfehler Fehler. Es ist nur "Benutzer", aber keine Ahnung, warum es nicht funktioniert. – user3440743

Verwandte Themen