teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/05/06 14:54

投稿

takuma_lol
takuma_lol

スコア0

answer CHANGED
@@ -1,2 +1,50 @@
1
1
  `user.rb`において`authenticated?`メソッドを定義している部分を`class << self`の外側へと移動したらundifined methodのエラー自体は解消されましたが、別の問題が発生しました。
2
+ ログアウトが正常に行われなくなりました。
3
+ おそらく、`sessions_helper.rb`内のcurrent_userメソッドが正しく作動していないのですが、解決方法が思いつきません。
4
+ ```言語:タイトル
5
+ (sessions_helper.rb)
6
+ module SessionsHelper
7
+
8
+ def log_in(user)
9
+ session[:user_id] = user.id
10
+ end
11
+
12
+ def remember(user)
13
+ user.remember
14
+ cookies.permanent.signed[:user_id] = user.id
15
+ cookies.permanent[:remember_token] = user.remember_token
16
+ end
17
+
18
+ def current_user
19
+ if (user_id = session[:user_id])
20
+ @current_user ||= User.find_by(id: user_id)
21
+ elsif (user_id = cookies.signed[:user_id])
22
+ user = User.find_by(id: user_id)
23
+ if user && user.authenticated?(cookies[:remember_token])
24
+ log_in user
25
+ @current_user = user
26
+ end
27
+ end
28
+ end
29
+
30
+ def logged_in?
31
+ !current_user.nil?
32
+ end
33
+
34
+ def forget(user)
35
+ user.forget
36
+ cookies.delete(:user_id)
37
+ cookies.delete(:remember_token)
38
+ end
39
+
40
+ def log_out
41
+
42
+ session.delete(:user_id)
43
+ @current_user = nil
44
+ end
45
+
46
+ end
47
+
48
+ ```
49
+
2
50
  こちらは別の質問として投稿するかもしれません。