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

質問編集履歴

4

追記いたしました

2021/03/27 00:35

投稿

dfasdf
dfasdf

スコア6

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

文法の修正

2021/03/27 00:35

投稿

dfasdf
dfasdf

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  rails チュートリアルの第九章でremember meをテストしていたのですが、下記のエラーが出ています。
2
- エラーコードから、@userに値が入っていないため、@userとcurrent_userがイコールになっていないためだと思うのですが、なぜsetupメソッドで@userに値が入らないのでしょうか。
2
+ エラーコードから、@userに値が入っていないため、@userとcurrent_userがイコールになっていないことが原因だと思うのですが、なぜsetupメソッドで@userに値が入らないのでしょうか。
3
3
  解決方法がわかりません。
4
4
  ご教授お願いします。
5
5
  ```

2

追記しました

2021/03/26 12:27

投稿

dfasdf
dfasdf

スコア6

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

追記いたしました

2021/03/26 12:20

投稿

dfasdf
dfasdf

スコア6

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
  ```