所以我有一个带有 Devise 设置的 Rails 应用程序。我已经:confirmable
在我的桌子上设置了Users
,并且发送确认电子邮件非常有效。
但是,我遇到了一个未经确认的用户尝试登录的小问题。
当在登录中输入无效的电子邮件/密码组合时,我会收到一条提示“无效的电子邮件或密码。”的提示。但是,如果未经确认的用户正确登录,他们将被重定向回/users/sign_in
,但没有针对 的闪烁消息"You have to confirm your account before continuing."
,该消息在 中定义/config/locales/devise.en.yml
。
我已经覆盖了这些方法:
RegistrationsController) :new, :create
会话控制器):创建
ConfirmationsController) :after_confirmation_path_for
当未经确认的用户使用正确的凭据登录时,Devise 究竟会做什么?我尝试binding.pry
在我的方法的顶部放置一个声明sessions#create
,但它从来没有命中它,这意味着 Devise 必须对此进行某种外部检查。我试图查看源代码无济于事。
这是日志状态正在发生的事情:
Started POST "/users/sign_in" for 127.0.0.1 at 2013-10-18 15:04:26 -0400
Processing by SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"03kQgiMGyXcq/nW8jlVyGkGDw1Q9lpP+JZ03e+LZHPU=", "user"=>{"email"=>"dummy@example.com", "password"=>"[FILTERED]"}, "commit"=>"Login"}
[1m[35mUser Load (0.7ms)[0m SELECT `users`.* FROM `users` WHERE `users`.`email` = 'dummy@example.com' LIMIT 1
[1m[36m (0.2ms)[0m [1mBEGIN[0m
[1m[35m (0.1ms)[0m COMMIT
Completed 401 Unauthorized in 90ms
Started GET "/users/sign_in" for 127.0.0.1 at 2013-10-18 15:04:27 -0400
Processing by SessionsController#new as HTML
Rendered devise/shared/_links.haml (0.6ms)
Rendered devise/sessions/new.html.haml within layouts/application (5.0ms)
Rendered layouts/_header.html.haml (0.9ms)
Rendered layouts/_navigation.html.haml (0.6ms)
Rendered layouts/_footer.html.haml (0.9ms)
Completed 200 OK in 33ms (Views: 28.0ms | ActiveRecord: 0.0ms)
所以看起来该sessions#create
方法确实被击中了。所以我不确定从这里去哪里。任何帮助,将不胜感激!
config/routes.rb
devise_for :users, :controllers => {
:registrations => "registrations",
:sessions => "sessions",
:confirmations => "confirmations"}