我正在关注教程导轨Michael Hartl。 我收到了用于激活用户帐户的电子邮件,但如果用户没有收到该电子邮件,则无法对您的帐户执行任何操作。 如果第一次没有来,我如何转发电子邮件以激活用户帐户?
我尝试添加以下代码,但没有运气。
sessions_controller.rb:
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
if user.activated?
log_in user
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
redirect_back_or user
else
message = "Cuenta no activada. "
message += "Revise su correo electronico para activar la cuenta."
---> user.send_activation_email
flash[:warning] = message
redirect_to root_url
end
else
flash.now[:danger] = 'Email y/o Contraseña incorrectos.'
render 'new'
end
end
答案 0 :(得分:0)
问题在于,在Hartl的教程中,激活摘要仅在创建用户时创建。在您的用户模型中,您应该看到:
before_create :create_activation_digest
每次向用户发送激活电子邮件时,都需要创建新的激活令牌。
一种方法是删除上述行并将其添加到您的send_activation_email
方法:
# Sends activation email.
def send_activation_email
create_activation_digest
self.save
UserMailer.account_activation(self).deliver_now
end
请注意,您还需要在此处保存用户实例,以便保存激活令牌。
可能还有其他(和更好的)方法,但至少应该让你走上正轨。