質問編集履歴
10
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -442,11 +442,7 @@
|
|
442
442
|
|
443
443
|
```
|
444
444
|
|
445
|
-
|
445
|
+
|
446
|
-
|
447
|
-
ボールドテキスト
|
448
|
-
|
449
|
-
```**
|
450
446
|
|
451
447
|
**ログ**
|
452
448
|
|
9
説明の加筆
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい
|
1
|
+
**解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい**
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -16,17 +16,19 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
問題が発生するまでの流れ・手順
|
19
|
+
**問題が発生するまでの流れ・手順**
|
20
20
|
|
21
21
|
new.html.erbでフォームに入力して登録ボタンを押した時
|
22
22
|
|
23
|
+
|
24
|
+
|
23
25
|
![イメージ説明](e3cc2fc7acf1eccdb2dd008dc3539afe.png)
|
24
26
|
|
25
27
|
|
26
28
|
|
27
|
-
※追記(最新の情報に修正)
|
29
|
+
**※追記(最新の情報に修正)
|
28
|
-
|
30
|
+
|
29
|
-
new.html.erb
|
31
|
+
app/views/steps/new.html.erb**
|
30
32
|
|
31
33
|
```
|
32
34
|
|
@@ -54,7 +56,7 @@
|
|
54
56
|
|
55
57
|
```
|
56
58
|
|
57
|
-
user.rb
|
59
|
+
**app/models/user.rb**
|
58
60
|
|
59
61
|
```
|
60
62
|
|
@@ -102,7 +104,7 @@
|
|
102
104
|
|
103
105
|
|
104
106
|
|
105
|
-
step.rb
|
107
|
+
**app/models/step.rb**
|
106
108
|
|
107
109
|
|
108
110
|
|
@@ -158,7 +160,7 @@
|
|
158
160
|
|
159
161
|
```
|
160
162
|
|
161
|
-
steps_collection.rb
|
163
|
+
**app/models/steps_collection.rb**
|
162
164
|
|
163
165
|
```
|
164
166
|
|
@@ -260,7 +262,7 @@
|
|
260
262
|
|
261
263
|
|
262
264
|
|
263
|
-
steps_controller.rb
|
265
|
+
**app/controllers/steps_controller.rb**
|
264
266
|
|
265
267
|
```ここに言語を入力
|
266
268
|
|
@@ -308,10 +310,148 @@
|
|
308
310
|
|
309
311
|
```
|
310
312
|
|
311
|
-
|
313
|
+
**app/helpers/sessions_helpers.rb**
|
312
314
|
|
313
315
|
```ここに言語を入力
|
314
316
|
|
317
|
+
module SessionsHelper
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
# 渡されたユーザーでログインする
|
322
|
+
|
323
|
+
def log_in(user)
|
324
|
+
|
325
|
+
session[:user_id] = user.id
|
326
|
+
|
327
|
+
end
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
# ユーザーのセッションを永続的にする
|
332
|
+
|
333
|
+
def remember(user)
|
334
|
+
|
335
|
+
user.remember
|
336
|
+
|
337
|
+
cookies.permanent.signed[:user_id] = user.id
|
338
|
+
|
339
|
+
cookies.permanent[:remember_token] = user.remember_token
|
340
|
+
|
341
|
+
end
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
# 記憶トークンcookieに対応するユーザーを返す
|
346
|
+
|
347
|
+
def current_user
|
348
|
+
|
349
|
+
if (user_id = session[:user_id])
|
350
|
+
|
351
|
+
@current_user ||= User.find_by(id: user_id)
|
352
|
+
|
353
|
+
elsif (user_id = cookies.signed[:user_id])
|
354
|
+
|
355
|
+
user = User.find_by(id: user_id)
|
356
|
+
|
357
|
+
if user && user.authenticated?(cookies[:remember_token])
|
358
|
+
|
359
|
+
log_in user
|
360
|
+
|
361
|
+
@current_user = user
|
362
|
+
|
363
|
+
end
|
364
|
+
|
365
|
+
end
|
366
|
+
|
367
|
+
end
|
368
|
+
|
369
|
+
|
370
|
+
|
371
|
+
# 渡されたユーザーがログイン済みユーザーであればtrueを返す
|
372
|
+
|
373
|
+
def current_user?(user)
|
374
|
+
|
375
|
+
user == current_user
|
376
|
+
|
377
|
+
end
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
# ユーザーがログインしていればtrue、その他ならfalseを返す
|
382
|
+
|
383
|
+
def logged_in?
|
384
|
+
|
385
|
+
!current_user.nil?
|
386
|
+
|
387
|
+
end
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
# 永続的セッションを破棄する
|
392
|
+
|
393
|
+
def forget(user)
|
394
|
+
|
395
|
+
user.forget
|
396
|
+
|
397
|
+
cookies.delete(:user_id)
|
398
|
+
|
399
|
+
cookies.delete(:remember_token)
|
400
|
+
|
401
|
+
end
|
402
|
+
|
403
|
+
|
404
|
+
|
405
|
+
# 現在のユーザーをログアウトする
|
406
|
+
|
407
|
+
def log_out
|
408
|
+
|
409
|
+
forget(current_user)
|
410
|
+
|
411
|
+
session.delete(:user_id)
|
412
|
+
|
413
|
+
@current_user = nil
|
414
|
+
|
415
|
+
end
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
# 記憶したURL (もしくはデフォルト値) にリダイレクト(フレンドリーフォワーディング)
|
420
|
+
|
421
|
+
def redirect_back_or(default)
|
422
|
+
|
423
|
+
redirect_to(session[:forwarding_url] || default)
|
424
|
+
|
425
|
+
session.delete(:forwarding_url)
|
426
|
+
|
427
|
+
end
|
428
|
+
|
429
|
+
|
430
|
+
|
431
|
+
# アクセスしようとしたURLを覚えておく
|
432
|
+
|
433
|
+
def store_location
|
434
|
+
|
435
|
+
session[:forwarding_url] = request.original_url if request.get?
|
436
|
+
|
437
|
+
end
|
438
|
+
|
439
|
+
|
440
|
+
|
441
|
+
end
|
442
|
+
|
443
|
+
```
|
444
|
+
|
445
|
+
**```ここに言語を入力
|
446
|
+
|
447
|
+
ボールドテキスト
|
448
|
+
|
449
|
+
```**
|
450
|
+
|
451
|
+
**ログ**
|
452
|
+
|
453
|
+
```ここに言語を入力
|
454
|
+
|
315
455
|
Started POST "/steps" for 172.19.0.1 at 2020-09-01 13:31:37 +0000
|
316
456
|
|
317
457
|
web_1 | Cannot render console from 172.19.0.1! Allowed networks: 172.18.0.1, 127.0.0.0/127.255.255.255, ::1
|
@@ -352,7 +492,7 @@
|
|
352
492
|
|
353
493
|
```
|
354
494
|
|
355
|
-
環境
|
495
|
+
**環境**
|
356
496
|
|
357
497
|
```ここに言語を入力
|
358
498
|
|
8
脱字の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,7 +62,9 @@
|
|
62
62
|
|
63
63
|
|
64
64
|
|
65
|
-
#
|
65
|
+
#== Schema Information
|
66
|
+
|
67
|
+
|
66
68
|
|
67
69
|
# id :bigint not null, primary key
|
68
70
|
|
7
インデント修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,27 +32,25 @@
|
|
32
32
|
|
33
33
|
<%= form_with model: @steps, url: steps_path, local: true do |form| %>
|
34
34
|
|
35
|
-
|
35
|
+
<% @steps.collection.each do |step| %>
|
36
|
-
|
36
|
+
|
37
|
-
|
37
|
+
<%= fields_for 'steps[]', step do |field| %>
|
38
|
-
|
38
|
+
|
39
|
-
|
39
|
+
<%= field.label :step_name %>
|
40
|
-
|
40
|
+
|
41
|
-
|
41
|
+
<%= field.text_field :step_name, class: 'form-field' %>
|
42
|
-
|
42
|
+
|
43
|
-
|
43
|
+
<br>
|
44
|
-
|
45
|
-
<% end %>
|
46
44
|
|
47
45
|
<% end %>
|
48
46
|
|
49
|
-
<%= form.submit %>
|
50
|
-
|
51
|
-
<%= link_to '戻る', step_path(current_user) %>
|
52
|
-
|
53
47
|
<% end %>
|
54
48
|
|
55
|
-
|
49
|
+
<%= form.submit %>
|
50
|
+
|
51
|
+
<%= link_to '戻る', step_path(current_user) %>
|
52
|
+
|
53
|
+
<% end %>
|
56
54
|
|
57
55
|
```
|
58
56
|
|
6
new.html.erbとsteps_collection.rbとsteps_controller.rbを指摘されたところの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,13 +4,7 @@
|
|
4
4
|
|
5
5
|
Railsで一括保存する機能を開発しています。
|
6
6
|
|
7
|
-
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが
|
7
|
+
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
![イメージ説明](e5179c20320fc0777a7de22426975985.png)
|
12
|
-
|
13
|
-
|
14
8
|
|
15
9
|
|
16
10
|
|
@@ -30,14 +24,12 @@
|
|
30
24
|
|
31
25
|
|
32
26
|
|
33
|
-
|
27
|
+
※追記(最新の情報に修正)
|
34
28
|
|
35
29
|
new.html.erb
|
36
30
|
|
37
31
|
```
|
38
32
|
|
39
|
-
|
40
|
-
|
41
33
|
<%= form_with model: @steps, url: steps_path, local: true do |form| %>
|
42
34
|
|
43
35
|
<% @steps.collection.each do |step| %>
|
@@ -60,8 +52,6 @@
|
|
60
52
|
|
61
53
|
<% end %>
|
62
54
|
|
63
|
-
</div>
|
64
|
-
|
65
55
|
|
66
56
|
|
67
57
|
```
|
@@ -186,7 +176,7 @@
|
|
186
176
|
|
187
177
|
include ActiveModel::Validations
|
188
178
|
|
189
|
-
STEP_NUM = 3
|
179
|
+
STEP_NUM = 3 # 同時にstepを作成する数
|
190
180
|
|
191
181
|
attr_accessor :collection
|
192
182
|
|
@@ -194,15 +184,19 @@
|
|
194
184
|
|
195
185
|
# 初期化メソッド
|
196
186
|
|
197
|
-
def initialize(attributes = [])
|
187
|
+
def initialize(current_user,attributes = [])
|
198
188
|
|
199
189
|
if attributes.present?
|
200
190
|
|
201
191
|
self.collection = attributes.map do |value|
|
202
192
|
|
193
|
+
# 修正
|
194
|
+
|
203
195
|
Step.new(
|
204
196
|
|
197
|
+
user_id: value['current_user.id'],
|
198
|
+
|
205
|
-
step_name: value['step_name']
|
199
|
+
step_name: value['step_name']
|
206
200
|
|
207
201
|
)
|
208
202
|
|
@@ -210,7 +204,7 @@
|
|
210
204
|
|
211
205
|
else
|
212
206
|
|
213
|
-
self.collection = STEP_NUM.times.map{ Step.new }
|
207
|
+
self.collection = STEP_NUM.times.map { Step.new }
|
214
208
|
|
215
209
|
end
|
216
210
|
|
@@ -266,7 +260,7 @@
|
|
266
260
|
|
267
261
|
|
268
262
|
|
269
|
-
steps_controller
|
263
|
+
steps_controller.rb
|
270
264
|
|
271
265
|
```ここに言語を入力
|
272
266
|
|
@@ -276,7 +270,7 @@
|
|
276
270
|
|
277
271
|
def new
|
278
272
|
|
279
|
-
@steps = StepCollection.new
|
273
|
+
@steps = StepCollection.new(current_user)
|
280
274
|
|
281
275
|
end
|
282
276
|
|
@@ -284,7 +278,7 @@
|
|
284
278
|
|
285
279
|
def create
|
286
280
|
|
287
|
-
@steps = StepCollection.new(step_params)
|
281
|
+
@steps = StepCollection.new(current_user, step_params)
|
288
282
|
|
289
283
|
if @steps.save
|
290
284
|
|
@@ -308,7 +302,7 @@
|
|
308
302
|
|
309
303
|
def step_params
|
310
304
|
|
311
|
-
params.require(:steps)
|
305
|
+
params.require(:steps)
|
312
306
|
|
313
307
|
end
|
314
308
|
|
@@ -318,33 +312,39 @@
|
|
318
312
|
|
319
313
|
```ここに言語を入力
|
320
314
|
|
321
|
-
|
322
|
-
|
323
|
-
web_1
|
324
|
-
|
325
|
-
web_1
|
326
|
-
|
327
|
-
web_1
|
328
|
-
|
329
|
-
web_1
|
330
|
-
|
331
|
-
web_1
|
332
|
-
|
333
|
-
web_1
|
334
|
-
|
335
|
-
web_1
|
336
|
-
|
337
|
-
web_1
|
338
|
-
|
339
|
-
web_1
|
340
|
-
|
341
|
-
web_1
|
342
|
-
|
343
|
-
web_1
|
344
|
-
|
345
|
-
web_1
|
346
|
-
|
347
|
-
web_1
|
315
|
+
Started POST "/steps" for 172.19.0.1 at 2020-09-01 13:31:37 +0000
|
316
|
+
|
317
|
+
web_1 | Cannot render console from 172.19.0.1! Allowed networks: 172.18.0.1, 127.0.0.0/127.255.255.255, ::1
|
318
|
+
|
319
|
+
web_1 | Processing by StepsController#create as HTML
|
320
|
+
|
321
|
+
web_1 | Parameters: {"utf8"=>"✓", "authenticity_token"=>"pZy8W+7yYOGz+BNc8CfWRJW+rBlkVX1ctV5OS7DWHFCe6FTD4ixvm97mVTw0kJ9v3naRHGnFREDo/r+2aM/x5Q==", "steps"=>[{"step_name"=>"step"}, {"step_name"=>"step1"}, {"step_name"=>"step2"}], "commit"=>"登録する"}
|
322
|
+
|
323
|
+
web_1 | User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 8 LIMIT 1
|
324
|
+
|
325
|
+
web_1 | (0.3ms) BEGIN
|
326
|
+
|
327
|
+
web_1 | (0.3ms) ROLLBACK
|
328
|
+
|
329
|
+
web_1 | "エラー"
|
330
|
+
|
331
|
+
web_1 | Rendering steps/new.html.erb within layouts/application
|
332
|
+
|
333
|
+
web_1 | Rendered steps/_form.html.erb (2.3ms)
|
334
|
+
|
335
|
+
web_1 | Rendered steps/new.html.erb within layouts/application (14.7ms)
|
336
|
+
|
337
|
+
web_1 | Rendered layouts/_shim.html.erb (0.4ms)
|
338
|
+
|
339
|
+
web_1 | Rendered layouts/_head.html.erb (441.1ms)
|
340
|
+
|
341
|
+
web_1 | Rendered layouts/_header.html.erb (2.3ms)
|
342
|
+
|
343
|
+
web_1 | Rendered layouts/_flash_messages.html.erb (0.4ms)
|
344
|
+
|
345
|
+
web_1 | Rendered layouts/_footer.html.erb (2.0ms)
|
346
|
+
|
347
|
+
web_1 | Completed 200 OK in 644ms (Views: 563.5ms | ActiveRecord: 3.0ms)
|
348
348
|
|
349
349
|
|
350
350
|
|
@@ -354,6 +354,10 @@
|
|
354
354
|
|
355
355
|
環境
|
356
356
|
|
357
|
+
```ここに言語を入力
|
358
|
+
|
357
359
|
rails: 5.2.3
|
358
360
|
|
359
361
|
ruby: 2.5.7
|
362
|
+
|
363
|
+
```
|
5
説明の加筆
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,6 +18,8 @@
|
|
18
18
|
|
19
19
|
色々試しましたがどうしても解決できませんでした。
|
20
20
|
|
21
|
+
足りない情報があれば指摘していただけると助かりますm(_ _)m
|
22
|
+
|
21
23
|
|
22
24
|
|
23
25
|
問題が発生するまでの流れ・手順
|
4
タグの追加
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
3
説明の加筆
test
CHANGED
File without changes
|
test
CHANGED
@@ -352,6 +352,6 @@
|
|
352
352
|
|
353
353
|
環境
|
354
354
|
|
355
|
-
rails 5.2.3
|
355
|
+
rails: 5.2.3
|
356
|
-
|
356
|
+
|
357
|
-
ruby:2.5.7
|
357
|
+
ruby: 2.5.7
|
2
説明の加筆
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,6 +20,14 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
+
問題が発生するまでの流れ・手順
|
24
|
+
|
25
|
+
new.html.erbでフォームに入力して登録ボタンを押した時
|
26
|
+
|
27
|
+
![イメージ説明](e3cc2fc7acf1eccdb2dd008dc3539afe.png)
|
28
|
+
|
29
|
+
|
30
|
+
|
23
31
|
|
24
32
|
|
25
33
|
new.html.erb
|
1
説明の加筆
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
Railsで一括保存する機能を開発しています。
|
6
|
+
|
5
|
-
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが次のエラーが表示された
|
7
|
+
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが次のエラーが表示されました。
|
6
8
|
|
7
9
|
|
8
10
|
|