質問編集履歴

3

内容の追記

2021/05/24 20:30

投稿

yachiyo
yachiyo

スコア3

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- app/helpers/sessions_helper.rbのコードです。
11
+ #app/helpers/sessions_helper.rbのコードです。
12
12
 
13
13
  module SessionsHelper
14
14
 
@@ -96,7 +96,7 @@
96
96
 
97
97
 
98
98
 
99
- #永続的セッションを破棄する
99
+ 永続的セッションを破棄する
100
100
 
101
101
  def forget(user)
102
102
 
@@ -154,7 +154,7 @@
154
154
 
155
155
 
156
156
 
157
- app/controllers/users.controller.rbのコードです。
157
+ # app/controllers/users.controller.rbのコードです。
158
158
 
159
159
 
160
160
 

2

タグの追加

2021/05/24 20:30

投稿

yachiyo
yachiyo

スコア3

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- # 渡されたユーザーでログインする
17
+ 渡されたユーザーでログインする
18
18
 
19
19
  def log_in(user)
20
20
 
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- # ユーザーのセッションを永続的にする
27
+ ユーザーのセッションを永続的にする
28
28
 
29
29
  def remember(user)
30
30
 
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- # 記憶トークンcookieに対応するユーザーを返す
41
+ 記憶トークンcookieに対応するユーザーを返す
42
42
 
43
43
  def current_user
44
44
 
@@ -64,7 +64,7 @@
64
64
 
65
65
 
66
66
 
67
- # 渡されたユーザーがカレントユーザーであればtrueを返す
67
+ 渡されたユーザーがカレントユーザーであればtrueを返す
68
68
 
69
69
  def current_user?(user)
70
70
 
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- # ユーザーがログインしていればtrue、その他ならfalseを返す
77
+ ユーザーがログインしていればtrue、その他ならfalseを返す
78
78
 
79
79
  def logged_in?
80
80
 
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
 
87
- # 現在のユーザーをログアウトする
87
+ 現在のユーザーをログアウトする
88
88
 
89
89
  def log_out
90
90
 
@@ -96,7 +96,7 @@
96
96
 
97
97
 
98
98
 
99
- # 永続的セッションを破棄する
99
+ #永続的セッションを破棄する
100
100
 
101
101
  def forget(user)
102
102
 
@@ -110,7 +110,7 @@
110
110
 
111
111
 
112
112
 
113
- # 現在のユーザーをログアウトする
113
+ 現在のユーザーをログアウトする
114
114
 
115
115
  def log_out
116
116
 
@@ -124,7 +124,7 @@
124
124
 
125
125
 
126
126
 
127
- # 記憶したURL (もしくはデフォルト値) にリダイレクト
127
+ 記憶したURL (もしくはデフォルト値) にリダイレクト
128
128
 
129
129
  def redirect_back_or(default)
130
130
 
@@ -136,7 +136,7 @@
136
136
 
137
137
 
138
138
 
139
- # アクセスしようとしたURLを覚えておく
139
+ アクセスしようとしたURLを覚えておく
140
140
 
141
141
  def store_location
142
142
 
@@ -148,6 +148,12 @@
148
148
 
149
149
 
150
150
 
151
+
152
+
153
+
154
+
155
+
156
+
151
157
  app/controllers/users.controller.rbのコードです。
152
158
 
153
159
 
@@ -262,11 +268,11 @@
262
268
 
263
269
 
264
270
 
265
- # beforeアクション
271
+ beforeアクション
266
-
267
-
268
-
272
+
273
+
274
+
269
- # ログイン済みユーザーかどうか確認
275
+ ログイン済みユーザーかどうか確認
270
276
 
271
277
  def logged_in_user
272
278
 
@@ -284,7 +290,7 @@
284
290
 
285
291
 
286
292
 
287
- # 正しいユーザーかどうか確認
293
+ 正しいユーザーかどうか確認
288
294
 
289
295
  def correct_user
290
296
 
@@ -296,7 +302,7 @@
296
302
 
297
303
 
298
304
 
299
- # 管理者かどうか確認
305
+ 管理者かどうか確認
300
306
 
301
307
  def admin_user
302
308
 

1

内容の追記

2021/05/24 20:26

投稿

yachiyo
yachiyo

スコア3

test CHANGED
File without changes
test CHANGED
@@ -5,3 +5,303 @@
5
5
  画像のようなエラーになっていまします。
6
6
 
7
7
  解決方法が全くわかりません。
8
+
9
+
10
+
11
+ app/helpers/sessions_helper.rbのコードです。
12
+
13
+ module SessionsHelper
14
+
15
+
16
+
17
+ # 渡されたユーザーでログインする
18
+
19
+ def log_in(user)
20
+
21
+ session[:user_id] = user.id
22
+
23
+ end
24
+
25
+
26
+
27
+ # ユーザーのセッションを永続的にする
28
+
29
+ def remember(user)
30
+
31
+ user.remember
32
+
33
+ cookies.permanent.signed[:user_id] = user.id
34
+
35
+ cookies.permanent[:remember_token] = user.remember_token
36
+
37
+ end
38
+
39
+
40
+
41
+ # 記憶トークンcookieに対応するユーザーを返す
42
+
43
+ def current_user
44
+
45
+ if (user_id = session[:user_id])
46
+
47
+ current_user ||= User.find_by(id: user_id)
48
+
49
+ elsif (user_id = cookies.signed[:user_id])
50
+
51
+ user = User.find_by(id: user_id)
52
+
53
+ if user && user.authenticated?(:remember, cookies[:remember_token])
54
+
55
+ log_in user
56
+
57
+ @current_user = user
58
+
59
+ end
60
+
61
+ end
62
+
63
+ end
64
+
65
+
66
+
67
+ # 渡されたユーザーがカレントユーザーであればtrueを返す
68
+
69
+ def current_user?(user)
70
+
71
+ user && user == current_user
72
+
73
+ end
74
+
75
+
76
+
77
+ # ユーザーがログインしていればtrue、その他ならfalseを返す
78
+
79
+ def logged_in?
80
+
81
+ !current_user.nil?
82
+
83
+ end
84
+
85
+
86
+
87
+ # 現在のユーザーをログアウトする
88
+
89
+ def log_out
90
+
91
+ session.delete(:user_id)
92
+
93
+ @current_user = nil
94
+
95
+ end
96
+
97
+
98
+
99
+ # 永続的セッションを破棄する
100
+
101
+ def forget(user)
102
+
103
+ user.forget
104
+
105
+ cookies.delete(:user_id)
106
+
107
+ cookies.delete(:remember_token)
108
+
109
+ end
110
+
111
+
112
+
113
+ # 現在のユーザーをログアウトする
114
+
115
+ def log_out
116
+
117
+ forget(current_user)
118
+
119
+ session.delete(:user_id)
120
+
121
+ @current_user = nil
122
+
123
+ end
124
+
125
+
126
+
127
+ # 記憶したURL (もしくはデフォルト値) にリダイレクト
128
+
129
+ def redirect_back_or(default)
130
+
131
+ redirect_to(session[:forwarding_url] || default)
132
+
133
+ session.delete(:forwarding_url)
134
+
135
+ end
136
+
137
+
138
+
139
+ # アクセスしようとしたURLを覚えておく
140
+
141
+ def store_location
142
+
143
+ session[:forwarding_url] = request.original_url if request.get?
144
+
145
+ end
146
+
147
+ end
148
+
149
+
150
+
151
+ app/controllers/users.controller.rbのコードです。
152
+
153
+
154
+
155
+ class UsersController < ApplicationController
156
+
157
+ before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
158
+
159
+ before_action :correct_user, only: [:edit, :update]
160
+
161
+ before_action :admin_user, only: :destroy
162
+
163
+
164
+
165
+ def index
166
+
167
+ @users = User.paginate(page: params[:page])
168
+
169
+ end
170
+
171
+
172
+
173
+ def show
174
+
175
+ @user = User.find(params[:id])
176
+
177
+ end
178
+
179
+
180
+
181
+ def new
182
+
183
+ @user = User.new
184
+
185
+ end
186
+
187
+
188
+
189
+ def create
190
+
191
+ @user = User.new(user_params)
192
+
193
+ if @user.save
194
+
195
+ @user.send_activation_email
196
+
197
+ flash[:info] = "Please check your email to activate your account."
198
+
199
+ redirect_to root_url
200
+
201
+ else
202
+
203
+ render 'new'
204
+
205
+ end
206
+
207
+ end
208
+
209
+
210
+
211
+ def edit
212
+
213
+ @user = User.find(params[:id])
214
+
215
+ end
216
+
217
+
218
+
219
+ def update
220
+
221
+ @user = User.find(params[:id])
222
+
223
+ if @user.update(user_params)
224
+
225
+ flash[:success] = "Profile updated"
226
+
227
+ redirect_to @user
228
+
229
+ else
230
+
231
+ render 'edit'
232
+
233
+ end
234
+
235
+ end
236
+
237
+
238
+
239
+ def destroy
240
+
241
+ User.find(params[:id]).destroy
242
+
243
+ flash[:success] = "User deleted"
244
+
245
+ redirect_to users_url
246
+
247
+ end
248
+
249
+
250
+
251
+ private
252
+
253
+
254
+
255
+ def user_params
256
+
257
+ params.require(:user).permit(:name, :email, :password,
258
+
259
+ :password_confirmation)
260
+
261
+ end
262
+
263
+
264
+
265
+ # beforeアクション
266
+
267
+
268
+
269
+ # ログイン済みユーザーかどうか確認
270
+
271
+ def logged_in_user
272
+
273
+ unless logged_in?
274
+
275
+ store_location
276
+
277
+ flash[:danger] = "Please log in."
278
+
279
+ redirect_to login_url
280
+
281
+ end
282
+
283
+ end
284
+
285
+
286
+
287
+ # 正しいユーザーかどうか確認
288
+
289
+ def correct_user
290
+
291
+ @user = User.find(params[:id])
292
+
293
+ redirect_to(root_url) unless current_user?(@user)
294
+
295
+ end
296
+
297
+
298
+
299
+ # 管理者かどうか確認
300
+
301
+ def admin_user
302
+
303
+ redirect_to(root_url) unless current_user.admin?
304
+
305
+ end
306
+
307
+ end