如何使用Devise和Rails 3实现渐进式参与?

时间:2011-01-17 22:37:29

标签: ruby-on-rails devise ruby-on-rails-plugins

我正在尝试使用Devise + Rails实现延迟注册(又称延迟身份验证,即逐步参与)网站流程。

gradual engagement ,我的意思是

  

“不要让用户登录,直到她   绝对必须,但让她玩   在网站周围记住“

我正在寻找一种使用设计来实现此目的的简单方法。我觉得这是许多其他人必须做的事情,但我还没有找到相关的文档。

以下方法听起来不错,所以我将从头开始:

  
      
  1. 创建仅“可记住”的用户
  2.   
  3. 访问某些页面时,要求这些用户拥有更多页面   他们的数据,如用户名和   密码,通过类似的东西   “before_filter:authenticate_user!”在   适当的控制器。
  4.   

这种方法有意义吗?还有更好的吗?您是否已使用愿意分享的Devise + Rails实施逐步参与注册/注册表单的方法?

3 个答案:

答案 0 :(得分:2)

我认为你给我们的文章的重点是:

  • 仅在必要时要求注册。

这是什么意思?

我们举一个例子。你是一个电子商务网站。

客户何时必须“最后”注册?在结账时。前所未有。因此,您无需存储或记住有关用户的任何信息。 设计永远不会在这里使用。

如何管理未签约的进/出用户的购物车?我会说数据库,会话ID为主键。或者您可以将所有项ID存储在cookie中,供以后使用。

在您的代码中,如果您有一个名为checkout的操作,只需在控制器中设置before_filter authenticate_user!, :only => [:checkout]

但也许你有一些限制,例如能够保留用户的昵称而不签约他?

答案 1 :(得分:1)

另一种选择是进行仅限电子邮件注册,然后发送带有特殊链接的电子邮件,以便稍后完成注册/将其带回其帐户。这是一个积极维护的关于设计电子邮件的注册教程:

https://github.com/plataformatec/devise/wiki/How-To:-Email-only-sign-up

我已经将这个教程用于我之前做过的网站,我们只是要求他们的电子邮件地址进行注册,然后发送电子邮件给他们完成注册/添加密码。

答案 2 :(得分:0)

如果需要,您可以将所有未签名用户的数据保存在Cookie中,并在用户登录后将其传输到数据库。