即使在电子邮件确认后,也会再次重新发送确认邮件。即使confirmed_at 属性显示确认时间,设备用户属性unconfirmed_email 也不会更改为NULL 值。
我正在使用 Rails 5 并设计 gem 版本 4.2
这是确认 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
这是注册 Controller 中验证电子邮件的功能。
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
结束
上面的代码适用于另一个模型,并且没有显示错误。我不知道该怎么办。请帮忙!
最佳答案
如果这是实际的代码,则有错误。
更改此行
user = user.find_by_email(email)
到这一行
user = User.find_by_email(email) # use the class!
关于mysql - 正在再次发送设计确认邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42801700/