4

我使用设计 3.0.3

我有一个可确认的模型。

我希望用户在整个会话期间首先登录,然后当用户回来时,他必须得到确认。这个想法不是通过检查电子邮件来破坏注册导航流程。

另一种选择是在被拒绝登录之前给用户 24 小时的延迟。

我尝试使用after_inactive_sign_up_path_for这种方式:

  def after_inactive_sign_up_path_for(user)
    user.confirm!
    sign_in(:user, user)
    user.confirmed_at = nil
    user.save
    return user_path(user)
  end 

但我最后还是被拒绝了。

对此有什么建议吗?

4

1 回答 1

3

好问题。

在您的用户模型中,添加此类方法

class User < ActiveRecord::Base
  def self.allow_unconfirmed_access_for
    1.day # Or any time frame you like
  end
end

有一个方法名为confirmation_period_valid?Devise::Models::Confrimable此方法将检查默认情况下不存在的上述类方法并期望为零。

如果您设置了这样的时间,Devise 将允许该用户在此期限内登录,即使他没有被确认。

您不需要对控制器进行任何更改。

免责声明:我之前没有使用过这个解决方案,只是通过浏览源码得出的结论。理论上它应该工作。

于 2013-09-12T17:36:17.643 回答