回答編集履歴
1
追記
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
|
こちらは別の質問として投稿するかもしれません。
|