gpt4 book ai didi

ruby-on-rails - Rails - 电子邮件确认 - RecordNotFound 错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:49 25 4
gpt4 key购买 nike

我希望在用户注册时发送电子邮件。此电子邮件应包含一个链接将帐户更改为完整用户。我希望此电子邮件链接成为安全 token 。

  • email_token 是每个用户随机生成的 token
  • email_activation_token 是一个 bool 值,表示用户是否完成注册

目前:我收到了要发送的电子邮件,但是当我点击链接时出现此错误。

ActiveRecord::RecordNotFound 在 UsersController#accept_invitation

Couldn't find User without an ID

链接已发送 http://localhost:3000/users/accept_invitation.P3Iu5-21nlISmdu2TlQ08w

用户 Controller .rb

class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
UserMailer.registration_confirmation(@user).deliver
redirect_to root_url, :notice => "Signed up!"
else
render "new"
end

def accept_invitation
@user = User.find(params[:email_token])
@user.email_activation_token = true
redirect_to root_url, :notice => "Email has been verified."
end
end
end

registration_confirmation.html.haml

Confirm your email address please!

= accept_invitation_users_url(@user.email_token)

user.rb 模型

    class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation

attr_accessor :password
before_save :encrypt_password
before_save { |user| user.email = email.downcase }
before_create { generate_token(:auth_token) }
before_create { generate_token(:email_token) }

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
VALID_PASSWORD_REGEX = /^(?=.*[a-zA-Z])(?=.*[0-9]).{6,}$/
validates_confirmation_of :password
validates :password, :on => :create, presence: true, format: { with: VALID_PASSWORD_REGEX }
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }

def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end

end

最佳答案

您收到该错误是因为在您的 accept_invitation 方法中调用 find 在 User 模型上需要一个 id 并且您正在传递 email_token 参数。

试试这个..

def accept_invitation
@user = User.find_by_email_token(params[:email_token])
@user.email_activation_token = true
@user.save
redirect_to root_url, :notice => "Email has been verified."
end

关于ruby-on-rails - Rails - 电子邮件确认 - RecordNotFound 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16288652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com