回答編集履歴

1

追記

2021/05/06 14:54

投稿

takuma_lol
takuma_lol

スコア0

test CHANGED
@@ -1,3 +1,99 @@
1
1
  `user.rb`において`authenticated?`メソッドを定義している部分を`class << self`の外側へと移動したらundifined methodのエラー自体は解消されましたが、別の問題が発生しました。
2
2
 
3
+ ログアウトが正常に行われなくなりました。
4
+
5
+ おそらく、`sessions_helper.rb`内のcurrent_userメソッドが正しく作動していないのですが、解決方法が思いつきません。
6
+
7
+ ```言語:タイトル
8
+
9
+ (sessions_helper.rb)
10
+
11
+ module SessionsHelper
12
+
13
+
14
+
15
+ def log_in(user)
16
+
17
+ session[:user_id] = user.id
18
+
19
+ end
20
+
21
+
22
+
23
+ def remember(user)
24
+
25
+ user.remember
26
+
27
+ cookies.permanent.signed[:user_id] = user.id
28
+
29
+ cookies.permanent[:remember_token] = user.remember_token
30
+
31
+ end
32
+
33
+
34
+
35
+ def current_user
36
+
37
+ if (user_id = session[:user_id])
38
+
39
+ @current_user ||= User.find_by(id: user_id)
40
+
41
+ elsif (user_id = cookies.signed[:user_id])
42
+
43
+ user = User.find_by(id: user_id)
44
+
45
+ if user && user.authenticated?(cookies[:remember_token])
46
+
47
+ log_in user
48
+
49
+ @current_user = user
50
+
51
+ end
52
+
53
+ end
54
+
55
+ end
56
+
57
+
58
+
59
+ def logged_in?
60
+
61
+ !current_user.nil?
62
+
63
+ end
64
+
65
+
66
+
67
+ def forget(user)
68
+
69
+ user.forget
70
+
71
+ cookies.delete(:user_id)
72
+
73
+ cookies.delete(:remember_token)
74
+
75
+ end
76
+
77
+
78
+
79
+ def log_out
80
+
81
+
82
+
83
+ session.delete(:user_id)
84
+
85
+ @current_user = nil
86
+
87
+ end
88
+
89
+
90
+
91
+ end
92
+
93
+
94
+
95
+ ```
96
+
97
+
98
+
3
99
  こちらは別の質問として投稿するかもしれません。