回答編集履歴

1

確認ポイントを添えてみました。

2021/02/12 23:10

投稿

suama
suama

スコア1997

test CHANGED
@@ -11,3 +11,83 @@
11
11
 
12
12
 
13
13
  つまり、user = User.find_by(email: params[:email]) のところでうまくuserが取得できてないと思います。
14
+
15
+
16
+
17
+ ## 20210213: 追記
18
+
19
+
20
+
21
+ コメントいただきましたので、追記をしてみます。解決に直結しなくてすみません!
22
+
23
+ エラーのキャプチャを見ると、どんなパラメータがコントローラーに渡っているかが表示されていますね。
24
+
25
+
26
+
27
+ > params -> { email: "3Drensyuu@gmail.com", id: 'xxxxx' }
28
+
29
+
30
+
31
+ という形でデータが渡っているので、確かに params[:email] でメールアドレスは取得できるかなと思います。
32
+
33
+
34
+
35
+ さて、rails console でUser.lastは確認しているとのことなので、同じように、rails consoneで User.find_by(email: "3Drensyuu@gmail.com") とした時に結果が返るでしょうか。
36
+
37
+
38
+
39
+ ただ、メールが届いているということなので、きっと存在するのでしょうけれど....。
40
+
41
+
42
+
43
+
44
+
45
+ ```ruby
46
+
47
+ def edit
48
+
49
+ user = User.find_by(email: params[:email])
50
+
51
+ # ここをいったん書き換えてみます(user == userでなくuser.present?)
52
+
53
+ # present? は対象のオブジェクトがnilでないことを示します。
54
+
55
+ # find_byでヒットしてればnilじゃないはず
56
+
57
+ # デバッグできるなら binding.pry を差し込んでみましょう
58
+
59
+ if user.present?
60
+
61
+ user.update_attribute(:activated, true)
62
+
63
+ user.update_attribute(:activated_at, Time.zone.now)
64
+
65
+ log_in user
66
+
67
+ flash[:success] = "Account activated!"
68
+
69
+ redirect_to user
70
+
71
+ else
72
+
73
+ flash[:danger] = "Invalid activation link"
74
+
75
+ redirect_to root_url
76
+
77
+ end
78
+
79
+ end
80
+
81
+ ```
82
+
83
+
84
+
85
+
86
+
87
+ 上記に加えて、editの処理が走った時の、Rails側のログも見てみると、なにかエラーの情報などが出ているかと思います。
88
+
89
+
90
+
91
+ find_by(xxxx) を行うと、SQL のSELECT文がRails側のログに出力されます。
92
+
93
+ ``SELECT * FROM USERS WHERE email = '....'`` 的な文です。送信したときのリクエストパラメータとともに、この前後の出力でもなにかヒントがあるかもしれません。