Rub*_*tic 4 ruby-on-rails devise ruby-on-rails-3 ruby-on-rails-3.1
升级到rails 3.2并设计2.0并单击通过电子邮件发送的确认链接或从开发中的控制台复制后,confirmed_at列不会更新.结果就是你无法登录.
解决这个问题的方法是什么,因为日志中没有任何内容,可访问的属性包含了confirmed_at,因此该列应该是可更新的.
小智 8
几个轴用于您的故障排除.
首先(显而易见的:-))您已在用户模型中激活确认
devise : :confirmable
Run Code Online (Sandbox Code Playgroud)
然后,检查数据库和模型中是否定义了以下列(如果您使用的是Mongoid,则使用不同的类型)
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
Run Code Online (Sandbox Code Playgroud)
最后(我不知道它适用于你并提出问题)但是2.0中有关于确认的变化
此外,还重命名或删除了一些配置选项:
Devise.confirm_within已重命名为Devise.allow_unconfirmed_access_for;
然后,为刚刚创建的新用户提供rails控制台的是什么?
应该给出类似的东西
User.last
=> #<User .... email: "youremail@example.com", confirmation_token: "abch76UfqHBBxHw97123", confirmed_at: nil, confirmation_sent_at: 2012-02-10 11:06:41 UTC, unconfirmed_email: nil, ....>
Run Code Online (Sandbox Code Playgroud)
您收到的链接(您也可以在浏览器中手动复制粘贴应该类似于(并与上述确认令牌一致)
<p><a href="http://localhost:5000/users/confirmation?confirmation_token=abch76UfqHBBxHw97123">Confirm my account</a></p>
Run Code Online (Sandbox Code Playgroud)
应相应地修改控制台中的用户
User.last
=> #<User .... email: "youremail@example.com", confirmation_token:nil, confirmed_at: confirmed_at: 2012-02-10 11:28:04 UTC, confirmation_sent_at: 2012-02-10 11:06:41 UTC, unconfirmed_email: nil, ....>
Run Code Online (Sandbox Code Playgroud)
如果在浏览器中复制链接时仍然无效,是否可以复制日志的最后几行?
周围的人
20:36:51 web.1 | Started GET "/users/confirmation?confirmation_token=abch76UfqHBBxHw97123" for 127.0.0.1 at 2012-02-10 20:36:51 +0900
20:36:51 web.1 | [127.0.0.1] Processing by Devise::ConfirmationsController#show as HTML
20:36:51 web.1 | [127.0.0.1] Parameters: {"confirmation_token"=>"abch76UfqHBBxHw97123"}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |