質問編集履歴
4
追記いたしました
title
CHANGED
File without changes
|
body
CHANGED
@@ -34,4 +34,50 @@
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
```
|
38
|
+
sessions_helper.rb
|
39
|
+
```
|
40
|
+
module SessionsHelper
|
41
|
+
|
42
|
+
def log_in(user)
|
43
|
+
session[:user_id] = user.id
|
44
|
+
end
|
45
|
+
|
46
|
+
def remember(user)
|
47
|
+
user.remember
|
48
|
+
cookies.permanent.signed[:user_id] = user.id
|
49
|
+
cookies.permanent[:remember_token] = user.remember_token
|
50
|
+
end
|
51
|
+
|
52
|
+
def current_user
|
53
|
+
if (user_id = session[:user_id])
|
54
|
+
@current_user ||= User.find_by(id: user_id)
|
55
|
+
elsif (user_id = cookies.signed[:user_id])
|
56
|
+
user = User.find_by(id: user_id)
|
57
|
+
if user && user.authenticated?(cookies[:remember_token])
|
58
|
+
log_in user
|
59
|
+
@current_user = user
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
def logged_in?
|
66
|
+
!current_user.nil?
|
67
|
+
end
|
68
|
+
|
69
|
+
def forget(user)
|
70
|
+
user.forget
|
71
|
+
cookies.delete(:user_id)
|
72
|
+
cookies.delete(:remember_token)
|
73
|
+
end
|
74
|
+
|
75
|
+
def log_out
|
76
|
+
forget(current_user)
|
77
|
+
session.delete(:user_id)
|
78
|
+
@current_user = nil
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
37
83
|
```
|
3
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
rails チュートリアルの第九章でremember meをテストしていたのですが、下記のエラーが出ています。
|
2
|
-
エラーコードから、@userに値が入っていないため、@userとcurrent_userがイコールになっていない
|
2
|
+
エラーコードから、@userに値が入っていないため、@userとcurrent_userがイコールになっていないことが原因だと思うのですが、なぜsetupメソッドで@userに値が入らないのでしょうか。
|
3
3
|
解決方法がわかりません。
|
4
4
|
ご教授お願いします。
|
5
5
|
```
|
2
追記しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
rails チュートリアルの第九章でremember meをテストしていたのですが、下記のエラーが
|
1
|
+
rails チュートリアルの第九章でremember meをテストしていたのですが、下記のエラーが出ています。
|
2
|
+
エラーコードから、@userに値が入っていないため、@userとcurrent_userがイコールになっていないためだと思うのですが、なぜsetupメソッドで@userに値が入らないのでしょうか。
|
3
|
+
解決方法がわかりません。
|
2
4
|
ご教授お願いします。
|
3
5
|
```
|
4
6
|
FAIL["test_current_user_returns_right_user_when_session_is_nil", #<Minitest::Reporters::Suite:0x000055f09692e410 @name="SessionsHelperTest">, 1.2140399210002215]
|
1
追記いたしました
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,4 +9,27 @@
|
|
9
9
|
-#<User id: 762146111, name: "Michael Example", email: "michael@example.com", created_at: "2021-03-26 07:37:00", updated_at: "2021-03-26 07:37:01", password_digest: [FILTERED], remember_digest: "$2a$04$dcHzfVJ.gK61ZLoozbVqaOR/ZAMvzdtOaTZSTmno7TN...">
|
10
10
|
+nil
|
11
11
|
test/helpers/sessions_helper_test.rb:11:in `block in <class:SessionsHelperTest>'
|
12
|
+
```
|
13
|
+
sessions_helper_test.rb
|
14
|
+
```ここに言語を入力
|
15
|
+
require 'test_helper'
|
16
|
+
|
17
|
+
class SessionsHelperTest < ActionView::TestCase
|
18
|
+
|
19
|
+
def setup
|
20
|
+
@user = users(:michael)
|
21
|
+
remember(@user)
|
22
|
+
end
|
23
|
+
|
24
|
+
test "current_user returns right user when session is nil" do
|
25
|
+
assert_equal @user, current_user
|
26
|
+
assert is_logged_in?
|
27
|
+
end
|
28
|
+
|
29
|
+
test "current_user returns nil when remember digest is wrong" do
|
30
|
+
@user.update_attribute(:remember_digest, User.digest(User.new_token))
|
31
|
+
assert_nil current_user
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
12
35
|
```
|