在创建之前确认用户

时间:2012-03-03 18:58:36

标签: ruby-on-rails controller authorization mailer

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

我想做的是拥有创建用户的能力然后 发送的电子邮件需要用户通过电子邮件进行验证。 一旦他们点击电子邮件中的确认链接,用户就会注册到 数据库,然后能够登录。我希望此链接转到创建功能。

我将如何这样做?

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

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

def创建     @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

感谢。

1 个答案:

答案 0 :(得分:4)

等待将用户保存到数据库与Web操作的无状态方式几乎是不可能的,但是,这并不意味着无法完成。

我建议在用户表中使用额外的字段,称为confirmed。将其初始化为false,然后让确认表单只需查找用户并将confirmed更改为true。

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

对于从不确认自己的人,你会编写一个每5天左右运行一次的rake任务,只需删除任何尚未确认的用户,使用resque_scheduler或cron job。

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