質問編集履歴

3

一部表現の修正および前提事項への追記

2022/04/01 02:53

投稿

hajsu00
hajsu00

スコア151

test CHANGED
@@ -1 +1 @@
1
- [Rails]devise gemを使用中root接続すると、userコントローラのshowアクションが実行されてしまう(無限ループ)
1
+ [Rails]devise gemでアカウント登録後ルートアクセスすると、usersコントローラのshowアクションに飛んでしまう(無限ループ)
test CHANGED
@@ -1,7 +1,8 @@
1
1
  お世話になっております。
2
2
 
3
3
  devise gemでRailsに認証機能を実装中です。
4
+
4
- gemをインストールしてルーティング設定を完了した直後は正常にサインイン/サインアップページへのルーティングができていたのですが、サインアップページからアカウント登録をした直後から正常にルーティングされない(無限ループ)現象が出て解決できずにいます。
5
+ gemをインストール後、ルーティング設定を完了した直後は正常にサインイン/サインアップページへのルーティングができていたのですが、サインアップページからアカウント登録をした直後から正常にルーティングされない(無限ループ)現象が出て解決できずにいます。
5
6
 
6
7
  ご助言いただけると幸いです。
7
8
 
@@ -11,12 +12,13 @@
11
12
  ・Rails v6.1.4.4
12
13
  ・devise 4.8.1
13
14
 
15
+ 自作したユーザー認証機能のdeviseへの置き換えです。
14
- 下記コマンドにてDevise用のViewおよびControllerを作成済み
16
+ また、下記コマンドにてDevise用のViewおよびControllerを作成済みです。
15
17
  ```
16
18
  $ rails g devise:views users
17
19
  $ rails g devise:controllers users
18
20
  ```
19
- deviseのviewを作りましたが、手は加えていません。
21
+ ※view手は加えていません。
20
22
 
21
23
  ### ルーティング
22
24
  ```config/routes.rb
@@ -32,11 +34,14 @@
32
34
  ```
33
35
 
34
36
  ```controllers/users_controller.rb
37
+ class UsersController < ApplicationController
38
+ ...
35
39
  def show
36
- @user = User.find(params[:id])
40
+ @user = User.find(params[:id]) <=取得できています
37
41
  @microposts = @user.microposts.order(created_at: :desc).includes([:like_relationships, replying: :replying_relationships, replied: :replied_relationships, sharing: :sharing_relationships, shared: :shared_relationships, glider_flight: :glider_micropost_relationships]).page(params[:page]).per(10)
38
42
  redirect_to root_url and return unless @user.activated?
39
43
  end
44
+ ...
40
45
  ```
41
46
 
42
47
  ## 解決できない問題

2

コントローラの内容等を追加しました。

2022/03/31 23:16

投稿

hajsu00
hajsu00

スコア151

test CHANGED
File without changes
test CHANGED
@@ -16,6 +16,7 @@
16
16
  $ rails g devise:views users
17
17
  $ rails g devise:controllers users
18
18
  ```
19
+ ※deviseのviewを作りましたが、手は加えていません。
19
20
 
20
21
  ### ルーティング
21
22
  ```config/routes.rb
@@ -28,6 +29,14 @@
28
29
  ...
29
30
  resources :users, only: [:show]
30
31
  ...
32
+ ```
33
+
34
+ ```controllers/users_controller.rb
35
+ def show
36
+ @user = User.find(params[:id])
37
+ @microposts = @user.microposts.order(created_at: :desc).includes([:like_relationships, replying: :replying_relationships, replied: :replied_relationships, sharing: :sharing_relationships, shared: :shared_relationships, glider_flight: :glider_micropost_relationships]).page(params[:page]).per(10)
38
+ redirect_to root_url and return unless @user.activated?
39
+ end
31
40
  ```
32
41
 
33
42
  ## 解決できない問題
@@ -56,6 +65,7 @@
56
65
 
57
66
  ## 試したこと
58
67
  ・ルーティングに問題があると考えてフローを見直した→解決できず
68
+ ・deviseのviewを削除してみる→解決できず
59
69
  ・カスタムルーティングのために以下を記載→解決できず
60
70
 
61
71
  ```config/routes.rb

1

誤って未完成記事を投稿してしまったため、修正をしました。

2022/03/31 23:12

投稿

hajsu00
hajsu00

スコア151

test CHANGED
@@ -1 +1 @@
1
- [Rails]devise gemを使用中にrootに接続すると、userコントローラのshowアクションが実行されてしまう
1
+ [Rails]devise gemを使用中にrootに接続すると、userコントローラのshowアクションが実行されてしまう(無限ループ)
test CHANGED
@@ -31,7 +31,8 @@
31
31
  ```
32
32
 
33
33
  ## 解決できない問題
34
+ サインアップページ(`users/sign_up`)にて手動でユーザー登録を実施後にroot(`/`)にアクセスすると、`users/1`に飛んでしまう。
34
- devise gemに
35
+ その後、UsersController#showとDevise::SessionsController#newの間で無限ループが発生ししまいます。
35
36
 
36
37
  ```console
37
38
  Started GET "/users/1" for ::1 at 2022-04-01 07:45:44 +0900
@@ -48,12 +49,14 @@
48
49
  User Load (8.8ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
49
50
  ```
50
51
 
52
+ なお`$ rails c`で確認したところ、ユーザー(id:1)は正常に登録がされていました。
51
53
 
52
-
54
+ ユーザーの登録前には画面遷移が正常にできていたため、ログイン状態の取得がうまくできず、かつルーティングが間違っているので無限ループが発生しているのだと思います。
55
+ しかし、具体的にどこに問題があるのかがわからず解決できずにいます。
53
56
 
54
57
  ## 試したこと
55
- ・ルーティングに問題があると考えてフローを見直した解決できず
58
+ ・ルーティングに問題があると考えてフローを見直した解決できず
56
- ・カスタムルーティングのために以下を記載
59
+ ・カスタムルーティングのために以下を記載→解決できず
57
60
 
58
61
  ```config/routes.rb
59
62
  devise_for :users, :controllers => {
@@ -62,3 +65,5 @@
62
65
  }
63
66
  ```
64
67
 
68
+ 不足している情報等があれば指摘していただけると幸いです。
69
+ よろしくお願いします。