【问题标题】:RAILS How I can forward mail to activate the user account?RAILS 如何转发邮件以激活用户帐户?
【发布时间】:2015-07-03 03:08:11
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails email


    【解决方案1】:

    问题是在 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
    

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-04
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 2016-03-11
      • 2017-06-22
      相关资源
      最近更新 更多