在我的应用程序中,我目前能够创建一个用户 然后开始会话并向电子邮件发送确认电子邮件 地址。虽然这一切都很好,但我希望能做得更多一点 先进。
我想做的是有能力创建用户然后 发送的电子邮件需要用户通过电子邮件进行验证。 一旦他们点击电子邮件中的确认链接,用户就会注册到 数据库,然后就可以登录。我希望此链接转到创建功能。
我该怎么做?
如果需要我当前的代码,我可以提供。
我的控制器中有这个/现在创建:
定义创建 @user = User.new(params[:user])
respond_to do |format|
if @user.save
Notifier.user_created(@user).deliver
session[:user_id] = @user.id
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
对于网络运行的无状态方式来说,等待将用户保存到数据库几乎是不可能的事情,但这并不意味着它不能完成。
我建议在用户表中使用一个额外的字段,称为
confirmed
。将其初始化为 false
,然后让确认表单简单地查找用户并将 confirmed
更改为 true。
这将允许您快速判断用户是否已确认自己,并且您可以使用它来做出决定,例如是否允许他们登录。
对于从不确认自己的人,您可以编写一个每 5 天左右运行一次的 rake 任务,然后使用 resque_scheduler 或 cron 作业之类的工具删除所有尚未确认自己的用户。
希望这是您解决方案的开始。