0

在我的应用程序中,我目前能够创建一个用户,然后该用户开始会话并向电子邮件地址发送电子邮件确认。虽然这一切都很好,但我希望让它更先进一点。

我希望做的是能够创建用户,然后发送电子邮件,要求用户通过电子邮件进行验证。一旦他们单击电子邮件中的确认链接,用户就会注册到数据库,然后就可以登录了。我希望这个链接能够转到创建功能。

我该怎么做呢?

如果需要我当前的代码,那么我可以提供。

我现在在我的控制器/创建中有这个:

def create @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

谢谢。

4

1 回答 1

4

等待将用户保存到数据库对于网络运行的无状态方式来说几乎是不可能的事情,但是,这并不意味着它不能完成。

我建议在您的用户表中使用一个额外的字段,称为confirmed. 让它初始化为false,然后让确认表单简单地查找用户并更改confirmed为 true。

这将允许您快速判断用户是否已确认自己,并且您可以使用它来做出决定,例如是否允许他们登录。

对于从不确认自己的人,您编写一个每 5 天左右运行一次的 rake 任务,然后删除任何尚未确认自己的用户,使用类似 resque_scheduler 或 cron 作业。

希望这是您解决方案的开始。

于 2012-03-03T19:05:54.483 回答