RAILS如何转发邮件以激活用户帐户?

时间:2015-07-02 18:16:26

标签: ruby-on-rails email

我正在关注教程导轨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

1 个答案:

答案 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

请注意,您还需要在此处保存用户实例,以便保存激活令牌。

可能还有其他(和更好的)方法,但至少应该让你走上正轨。