質問編集履歴
3
sessions_helper.rbを追加、リスト30の $ rails testでパスするはずがエラーになっています。
test
CHANGED
File without changes
|
test
CHANGED
@@ -317,7 +317,8 @@
|
|
317
317
|
@current_user = user
|
318
318
|
end
|
319
319
|
|
320
|
-
修正箇所がないように見えます
|
320
|
+
修正箇所がないように見えます。
|
321
|
+
sessions_helper_test.rbを追記しました。リスト 11.30のrails testでgreenになるはずがエラーによってRedの状態です。
|
321
322
|
|
322
323
|
### 補足
|
323
324
|
Rails 7.0.8.4
|
2
書き忘れていたsessions_helper_test.rb のコードを追記しました。エラー内容は同じです。
test
CHANGED
File without changes
|
test
CHANGED
@@ -244,6 +244,44 @@
|
|
244
244
|
end
|
245
245
|
|
246
246
|
```
|
247
|
+
※追加したsessions_helper_test.rb
|
248
|
+
```Ruby
|
249
|
+
|
250
|
+
require "test_helper"
|
251
|
+
|
252
|
+
class SessionsHelperTest < ActionView::TestCase
|
253
|
+
|
254
|
+
def setup
|
255
|
+
@user = users(:michael)
|
256
|
+
remember(@user)
|
257
|
+
end
|
258
|
+
|
259
|
+
test "current_user returns right user when session is nil" do
|
260
|
+
assert_equal @user, current_user
|
261
|
+
assert is_logged_in?
|
262
|
+
end
|
263
|
+
|
264
|
+
test "current_user returns nil when remember digest is wrong" do
|
265
|
+
@user.update_attribute(:remember_digest, User.digest(User.new_token))
|
266
|
+
assert_nil current_user
|
267
|
+
end
|
268
|
+
|
269
|
+
# 記憶トークンcookieに対応するユーザーを返す
|
270
|
+
def current_user
|
271
|
+
if (user_id = session[:user_id])
|
272
|
+
@current_user ||= User.find_by(id: user_id)
|
273
|
+
elsif (user_id = cookies.encrypted[:user_id])
|
274
|
+
user = User.find_by(id: user_id)
|
275
|
+
if user && user.authenticated?(cookies[:remember_token])
|
276
|
+
log_in user
|
277
|
+
@current_user = user
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
end
|
283
|
+
|
284
|
+
```
|
247
285
|
|
248
286
|
### 試したこと・調べたこと
|
249
287
|
- [x] teratailやGoogle等で検索した
|
1
Railsチュートリアルで黄色の追加、編集部分への補足説明を追加。
test
CHANGED
File without changes
|
test
CHANGED
@@ -65,7 +65,7 @@
|
|
65
65
|
remember_digest || remember
|
66
66
|
end
|
67
67
|
|
68
|
-
# 渡されたトークンがダイジェストと一致したらtrueを返す
|
68
|
+
# 渡されたトークンがダイジェストと一致したらtrueを返す(追加した部分です)
|
69
69
|
def authenticated?(attribute, token)
|
70
70
|
digest = send("#{attribute}_digest")
|
71
71
|
return false if digest.nil?
|
@@ -124,7 +124,7 @@
|
|
124
124
|
@current_user ||= user if session[:session_token] == user.session_token
|
125
125
|
elsif (user_id = cookies.encrypted[:user_id])
|
126
126
|
user = User.find_by(id: user_id)
|
127
|
-
if user && user.authenticated?(:remember, cookies[:remember_token])
|
127
|
+
if user && user.authenticated?(:remember, cookies[:remember_token]) ⇦追加したコードです
|
128
128
|
log_in user
|
129
129
|
@current_user = user
|
130
130
|
end
|
@@ -238,7 +238,7 @@
|
|
238
238
|
assert_not @user.valid?
|
239
239
|
end
|
240
240
|
|
241
|
-
test "authenticated? should return false for a user with nil digest" do
|
241
|
+
test "authenticated? should return false for a user with nil digest" do ⇦追加した部分です。
|
242
242
|
assert_not @user.authenticated?(:remember, '')
|
243
243
|
end
|
244
244
|
end
|