だから私はDeviseがセットアップされたRailsアプリを持っています。テーブルに:confirmable
設定しましたが、Users
確認メールの送信は完全に機能します。
ただし、未確認のユーザーがサインインしようとしているという小さな問題が発生しています。
無効な電子メールとパスワードの組み合わせがログインに入力されると、「無効な電子メールまたはパスワード」というフラッシュ通知が表示されます。ただし、未確認のユーザーが正しくサインインすると、ユーザーは にリダイレクトされますが、 で定義されている/users/sign_in
のフラッシュ メッセージはありません。"You have to confirm your account before continuing."
/config/locales/devise.en.yml
これらのメソッドをオーバーライドしました:
RegistrationsController) :new, :create
SessionsController) :作成
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"}