質問編集履歴
10
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -220,9 +220,7 @@
|
|
220
220
|
|
221
221
|
end
|
222
222
|
```
|
223
|
-
|
223
|
+
|
224
|
-
ボールドテキスト
|
225
|
-
```**
|
226
224
|
**ログ**
|
227
225
|
```ここに言語を入力
|
228
226
|
Started POST "/steps" for 172.19.0.1 at 2020-09-01 13:31:37 +0000
|
9
説明の加筆
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい
|
1
|
+
**解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい**
|
2
2
|
|
3
3
|
Railsで一括保存する機能を開発しています。
|
4
4
|
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが
|
@@ -7,12 +7,13 @@
|
|
7
7
|
色々試しましたがどうしても解決できませんでした。
|
8
8
|
足りない情報があれば指摘していただけると助かりますm(_ _)m
|
9
9
|
|
10
|
-
問題が発生するまでの流れ・手順
|
10
|
+
**問題が発生するまでの流れ・手順**
|
11
11
|
new.html.erbでフォームに入力して登録ボタンを押した時
|
12
|
+
|
12
13
|

|
13
14
|
|
14
|
-
※追記(最新の情報に修正)
|
15
|
+
**※追記(最新の情報に修正)
|
15
|
-
new.html.erb
|
16
|
+
app/views/steps/new.html.erb**
|
16
17
|
```
|
17
18
|
<%= form_with model: @steps, url: steps_path, local: true do |form| %>
|
18
19
|
<% @steps.collection.each do |step| %>
|
@@ -26,7 +27,7 @@
|
|
26
27
|
<%= link_to '戻る', step_path(current_user) %>
|
27
28
|
<% end %>
|
28
29
|
```
|
29
|
-
user.rb
|
30
|
+
**app/models/user.rb**
|
30
31
|
```
|
31
32
|
|
32
33
|
|
@@ -50,7 +51,7 @@
|
|
50
51
|
end
|
51
52
|
```
|
52
53
|
|
53
|
-
step.rb
|
54
|
+
**app/models/step.rb**
|
54
55
|
|
55
56
|
```ここに言語を入力
|
56
57
|
# == Schema Information
|
@@ -78,7 +79,7 @@
|
|
78
79
|
belongs_to :user
|
79
80
|
end
|
80
81
|
```
|
81
|
-
steps_collection.rb
|
82
|
+
**app/models/steps_collection.rb**
|
82
83
|
```
|
83
84
|
# Stepのコレクションモデル
|
84
85
|
class StepCollection
|
@@ -129,7 +130,7 @@
|
|
129
130
|
end
|
130
131
|
```
|
131
132
|
|
132
|
-
steps_controller.rb
|
133
|
+
**app/controllers/steps_controller.rb**
|
133
134
|
```ここに言語を入力
|
134
135
|
class StepsController < ApplicationController
|
135
136
|
|
@@ -153,8 +154,77 @@
|
|
153
154
|
params.require(:steps)
|
154
155
|
end
|
155
156
|
```
|
156
|
-
|
157
|
+
**app/helpers/sessions_helpers.rb**
|
157
158
|
```ここに言語を入力
|
159
|
+
module SessionsHelper
|
160
|
+
|
161
|
+
# 渡されたユーザーでログインする
|
162
|
+
def log_in(user)
|
163
|
+
session[:user_id] = user.id
|
164
|
+
end
|
165
|
+
|
166
|
+
# ユーザーのセッションを永続的にする
|
167
|
+
def remember(user)
|
168
|
+
user.remember
|
169
|
+
cookies.permanent.signed[:user_id] = user.id
|
170
|
+
cookies.permanent[:remember_token] = user.remember_token
|
171
|
+
end
|
172
|
+
|
173
|
+
# 記憶トークンcookieに対応するユーザーを返す
|
174
|
+
def current_user
|
175
|
+
if (user_id = session[:user_id])
|
176
|
+
@current_user ||= User.find_by(id: user_id)
|
177
|
+
elsif (user_id = cookies.signed[:user_id])
|
178
|
+
user = User.find_by(id: user_id)
|
179
|
+
if user && user.authenticated?(cookies[:remember_token])
|
180
|
+
log_in user
|
181
|
+
@current_user = user
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
# 渡されたユーザーがログイン済みユーザーであればtrueを返す
|
187
|
+
def current_user?(user)
|
188
|
+
user == current_user
|
189
|
+
end
|
190
|
+
|
191
|
+
# ユーザーがログインしていればtrue、その他ならfalseを返す
|
192
|
+
def logged_in?
|
193
|
+
!current_user.nil?
|
194
|
+
end
|
195
|
+
|
196
|
+
# 永続的セッションを破棄する
|
197
|
+
def forget(user)
|
198
|
+
user.forget
|
199
|
+
cookies.delete(:user_id)
|
200
|
+
cookies.delete(:remember_token)
|
201
|
+
end
|
202
|
+
|
203
|
+
# 現在のユーザーをログアウトする
|
204
|
+
def log_out
|
205
|
+
forget(current_user)
|
206
|
+
session.delete(:user_id)
|
207
|
+
@current_user = nil
|
208
|
+
end
|
209
|
+
|
210
|
+
# 記憶したURL (もしくはデフォルト値) にリダイレクト(フレンドリーフォワーディング)
|
211
|
+
def redirect_back_or(default)
|
212
|
+
redirect_to(session[:forwarding_url] || default)
|
213
|
+
session.delete(:forwarding_url)
|
214
|
+
end
|
215
|
+
|
216
|
+
# アクセスしようとしたURLを覚えておく
|
217
|
+
def store_location
|
218
|
+
session[:forwarding_url] = request.original_url if request.get?
|
219
|
+
end
|
220
|
+
|
221
|
+
end
|
222
|
+
```
|
223
|
+
**```ここに言語を入力
|
224
|
+
ボールドテキスト
|
225
|
+
```**
|
226
|
+
**ログ**
|
227
|
+
```ここに言語を入力
|
158
228
|
Started POST "/steps" for 172.19.0.1 at 2020-09-01 13:31:37 +0000
|
159
229
|
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
|
160
230
|
web_1 | Processing by StepsController#create as HTML
|
@@ -175,7 +245,7 @@
|
|
175
245
|
|
176
246
|
|
177
247
|
```
|
178
|
-
環境
|
248
|
+
**環境**
|
179
249
|
```ここに言語を入力
|
180
250
|
rails: 5.2.3
|
181
251
|
ruby: 2.5.7
|
8
脱字の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -30,7 +30,8 @@
|
|
30
30
|
```
|
31
31
|
|
32
32
|
|
33
|
-
#
|
33
|
+
#== Schema Information
|
34
|
+
|
34
35
|
# id :bigint not null, primary key
|
35
36
|
# admin :boolean default(FALSE)
|
36
37
|
# email :string(255)
|
7
インデント修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -15,17 +15,16 @@
|
|
15
15
|
new.html.erb
|
16
16
|
```
|
17
17
|
<%= form_with model: @steps, url: steps_path, local: true do |form| %>
|
18
|
-
|
18
|
+
<% @steps.collection.each do |step| %>
|
19
|
-
|
19
|
+
<%= fields_for 'steps[]', step do |field| %>
|
20
|
-
|
20
|
+
<%= field.label :step_name %>
|
21
|
-
|
21
|
+
<%= field.text_field :step_name, class: 'form-field' %>
|
22
|
-
|
22
|
+
<br>
|
23
|
-
<% end %>
|
24
23
|
<% end %>
|
25
|
-
<%= form.submit %>
|
26
|
-
<%= link_to '戻る', step_path(current_user) %>
|
27
24
|
<% end %>
|
28
|
-
|
25
|
+
<%= form.submit %>
|
26
|
+
<%= link_to '戻る', step_path(current_user) %>
|
27
|
+
<% end %>
|
29
28
|
```
|
30
29
|
user.rb
|
31
30
|
```
|
6
new.html.erbとsteps_collection.rbとsteps_controller.rbを指摘されたところの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい
|
2
2
|
|
3
3
|
Railsで一括保存する機能を開発しています。
|
4
|
-
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが
|
4
|
+
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが
|
5
5
|
|
6
|
-

|
7
|
-
|
8
|
-
|
9
6
|
どのようにすれば一括保存をすることができますか?
|
10
7
|
色々試しましたがどうしても解決できませんでした。
|
11
8
|
足りない情報があれば指摘していただけると助かりますm(_ _)m
|
@@ -14,10 +11,9 @@
|
|
14
11
|
new.html.erbでフォームに入力して登録ボタンを押した時
|
15
12
|

|
16
13
|
|
17
|
-
|
14
|
+
※追記(最新の情報に修正)
|
18
15
|
new.html.erb
|
19
16
|
```
|
20
|
-
|
21
17
|
<%= form_with model: @steps, url: steps_path, local: true do |form| %>
|
22
18
|
<% @steps.collection.each do |step| %>
|
23
19
|
<%= fields_for 'steps[]', step do |field| %>
|
@@ -29,7 +25,6 @@
|
|
29
25
|
<%= form.submit %>
|
30
26
|
<%= link_to '戻る', step_path(current_user) %>
|
31
27
|
<% end %>
|
32
|
-
</div>
|
33
28
|
|
34
29
|
```
|
35
30
|
user.rb
|
@@ -92,19 +87,21 @@
|
|
92
87
|
extend ActiveModel::Translation
|
93
88
|
include ActiveModel::AttributeMethods
|
94
89
|
include ActiveModel::Validations
|
95
|
-
STEP_NUM = 3
|
90
|
+
STEP_NUM = 3 # 同時にstepを作成する数
|
96
91
|
attr_accessor :collection
|
97
92
|
|
98
93
|
# 初期化メソッド
|
99
|
-
def initialize(attributes = [])
|
94
|
+
def initialize(current_user,attributes = [])
|
100
95
|
if attributes.present?
|
101
96
|
self.collection = attributes.map do |value|
|
97
|
+
# 修正
|
102
98
|
Step.new(
|
99
|
+
user_id: value['current_user.id'],
|
103
|
-
step_name: value['step_name']
|
100
|
+
step_name: value['step_name']
|
104
101
|
)
|
105
102
|
end
|
106
103
|
else
|
107
|
-
self.collection = STEP_NUM.times.map{ Step.new }
|
104
|
+
self.collection = STEP_NUM.times.map { Step.new }
|
108
105
|
end
|
109
106
|
end
|
110
107
|
|
@@ -132,16 +129,16 @@
|
|
132
129
|
end
|
133
130
|
```
|
134
131
|
|
135
|
-
steps_controller
|
132
|
+
steps_controller.rb
|
136
133
|
```ここに言語を入力
|
137
134
|
class StepsController < ApplicationController
|
138
135
|
|
139
136
|
def new
|
140
|
-
@steps = StepCollection.new
|
137
|
+
@steps = StepCollection.new(current_user)
|
141
138
|
end
|
142
139
|
|
143
140
|
def create
|
144
|
-
@steps = StepCollection.new(step_params)
|
141
|
+
@steps = StepCollection.new(current_user, step_params)
|
145
142
|
if @steps.save
|
146
143
|
flash[:success] = '成功しました!'
|
147
144
|
redirect_to step_path(current_user)
|
@@ -153,28 +150,33 @@
|
|
153
150
|
private
|
154
151
|
|
155
152
|
def step_params
|
156
|
-
params.require(:steps)
|
153
|
+
params.require(:steps)
|
157
154
|
end
|
158
155
|
```
|
159
156
|
ログ
|
160
157
|
```ここに言語を入力
|
161
|
-
|
162
|
-
web_1
|
163
|
-
web_1
|
164
|
-
web_1
|
165
|
-
web_1
|
166
|
-
web_1
|
167
|
-
web_1
|
168
|
-
web_1
|
169
|
-
web_1
|
170
|
-
web_1
|
171
|
-
web_1
|
172
|
-
web_1
|
173
|
-
web_1
|
174
|
-
web_1
|
158
|
+
Started POST "/steps" for 172.19.0.1 at 2020-09-01 13:31:37 +0000
|
159
|
+
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
|
160
|
+
web_1 | Processing by StepsController#create as HTML
|
161
|
+
web_1 | Parameters: {"utf8"=>"✓", "authenticity_token"=>"pZy8W+7yYOGz+BNc8CfWRJW+rBlkVX1ctV5OS7DWHFCe6FTD4ixvm97mVTw0kJ9v3naRHGnFREDo/r+2aM/x5Q==", "steps"=>[{"step_name"=>"step"}, {"step_name"=>"step1"}, {"step_name"=>"step2"}], "commit"=>"登録する"}
|
162
|
+
web_1 | User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 8 LIMIT 1
|
163
|
+
web_1 | (0.3ms) BEGIN
|
164
|
+
web_1 | (0.3ms) ROLLBACK
|
165
|
+
web_1 | "エラー"
|
166
|
+
web_1 | Rendering steps/new.html.erb within layouts/application
|
167
|
+
web_1 | Rendered steps/_form.html.erb (2.3ms)
|
168
|
+
web_1 | Rendered steps/new.html.erb within layouts/application (14.7ms)
|
169
|
+
web_1 | Rendered layouts/_shim.html.erb (0.4ms)
|
170
|
+
web_1 | Rendered layouts/_head.html.erb (441.1ms)
|
171
|
+
web_1 | Rendered layouts/_header.html.erb (2.3ms)
|
172
|
+
web_1 | Rendered layouts/_flash_messages.html.erb (0.4ms)
|
173
|
+
web_1 | Rendered layouts/_footer.html.erb (2.0ms)
|
174
|
+
web_1 | Completed 200 OK in 644ms (Views: 563.5ms | ActiveRecord: 3.0ms)
|
175
175
|
|
176
176
|
|
177
177
|
```
|
178
178
|
環境
|
179
|
+
```ここに言語を入力
|
179
180
|
rails: 5.2.3
|
180
|
-
ruby: 2.5.7
|
181
|
+
ruby: 2.5.7
|
182
|
+
```
|
5
説明の加筆
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
|
9
9
|
どのようにすれば一括保存をすることができますか?
|
10
10
|
色々試しましたがどうしても解決できませんでした。
|
11
|
+
足りない情報があれば指摘していただけると助かりますm(_ _)m
|
11
12
|
|
12
13
|
問題が発生するまでの流れ・手順
|
13
14
|
new.html.erbでフォームに入力して登録ボタンを押した時
|
4
タグの追加
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
3
説明の加筆
title
CHANGED
File without changes
|
body
CHANGED
@@ -175,5 +175,5 @@
|
|
175
175
|
|
176
176
|
```
|
177
177
|
環境
|
178
|
-
rails 5.2.3
|
178
|
+
rails: 5.2.3
|
179
|
-
ruby:2.5.7
|
179
|
+
ruby: 2.5.7
|
2
説明の加筆
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,7 +9,11 @@
|
|
9
9
|
どのようにすれば一括保存をすることができますか?
|
10
10
|
色々試しましたがどうしても解決できませんでした。
|
11
11
|
|
12
|
+
問題が発生するまでの流れ・手順
|
13
|
+
new.html.erbでフォームに入力して登録ボタンを押した時
|
14
|
+

|
12
15
|
|
16
|
+
|
13
17
|
new.html.erb
|
14
18
|
```
|
15
19
|
|
1
説明の加筆
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
解決したいこと:userモデルに紐づくstepモデルを一括保存をしたい
|
2
2
|
|
3
|
+
Railsで一括保存する機能を開発しています。
|
3
|
-
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが次のエラーが表示された
|
4
|
+
[モデルを一括登録する手順](https://qiita.com/Ryoga_aoym/items/91a3940cfa4de268fca4#%E3%83%A2%E3%83%87%E3%83%AB)を参考にしてやってみましたが次のエラーが表示されました。
|
4
5
|
|
5
6
|

|
6
7
|
|