【devise】ログインできないときの対処法

プログラミング

おはようございます、もっちゃんです!

早速ですが、「devise」ってgemありますよね!

Railsでログイン機能を簡単に実装できる
(初学者にとって決して簡単とは言えない気がする)
gemです(*´ω`*)笑

今回はdeviseを使ってログイン機能を実装したのに

なぜかログインがうまくできない!!
と3時間ハマった末に解決したという私の経験から

超簡単な対処法を解説したいと思います!

(あくまで私がハマった一例ですのでご参考までに。。)

【devise】ログインできないときの対処法

結論から言うと

usersコントローラーの
「deviseのルーティング」を
「usersのルーティング」よりも
先に記述する(下の画像が例です)

こうすることでログインが正しく機能するようになります

つまり〜

「usersコントローラーのルーティングと、deviseのルーティングの順番」

これが原因でした!
(正確にはルーティングが衝突してしまうのが原因だけど、いまは飛ばしてあとで解説します)

まずはルーティングを確認する

ご存知のとおり「$ rails routes」コマンドでルーティングを確認すると

このようにルーティングが表示されますね

ここで赤枠で囲まれたところを見てみましょう!

はい!原因はこれです

「usersのルーティング」が「deviseのルーティング」よりも
先に表示されていますよね?

この順番がイケてなかったわけです!

devise_for :usersを最初に持ってくる

/config/routes.rbファイルを開いて

devise_for :usersを最初に持ってきます!

こうすることでルーティングの順番を変えることができます!

もう1度ルーティングを確認する

このようになりました!

アップで見てみると

deviseのルーティングがusersよりも上に(先に)表示されていますね!

これで解決です!

終わりに

今回の原因はこんなかんじで
ルーティングが衝突してしまうことが原因でした

ルーティングを記述する順番によって
users/:idにsign_upが変数として入ってしまい
deviseコントローラーが動かないために
ログインできない

ということになってしまうみたいです!

プログラミングってほんとにわからないことだらけで
9.5割はググって進めていくかんじですよね(笑)

それゆえに挫折率が高いと言われてます

いま私はプログラミングを本格的にはじめて3ヶ月くらいですが

正直わからないことしかないです(゚∀゚)笑

でも今回みたいに長時間悩んだ末に、答えに辿り着けたときの快感にはものすごい中毒性があるんです(゚∀゚)笑

これがわかるようになって、スラスラ思い通りにプログラミングできたら、どんなに楽しいだろう。。。

そんなことを思いながら、日々腕を磨いているわけです(*´ω`*)

目指せ理想の「キャンプ場検索予約サービス」開発!!!