質問編集履歴
3
情報の更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -290,6 +290,98 @@
|
|
290
290
|
|
291
291
|
```
|
292
292
|
|
293
|
+
|
294
|
+
|
295
|
+
####試したことの追記(2020/9/4)
|
296
|
+
|
297
|
+
- if @prject.save!(@prject.errors)により、User is invalid がエラー内容として出現していたことから、Validationが邪魔をしているため保存ができていないことを疑った
|
298
|
+
|
299
|
+
→UserモデルのValidationを一時的にコメントアウトした結果、意図したデータ保存がされた(プロジェクトと同時に中間テーブルのデータも保存)
|
300
|
+
|
301
|
+
→根本原因はValidationであることが判明した。しかし、ValidationはUser登録の時に必須でありコンフリクトが生じてしまった。
|
302
|
+
|
303
|
+
```Ruby
|
304
|
+
|
305
|
+
class User < ApplicationRecord
|
306
|
+
|
307
|
+
# Include default devise modules. Others available are:
|
308
|
+
|
309
|
+
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
|
310
|
+
|
311
|
+
devise :database_authenticatable, :registerable,
|
312
|
+
|
313
|
+
:recoverable, :rememberable, :validatable
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
# japanese_letters = /\A[ぁ-んァ-ン一-龥]+\z/
|
318
|
+
|
319
|
+
# with_options presence: true do
|
320
|
+
|
321
|
+
# validates :last_name, format: { with: japanese_letters, message: 'is not full-width characters' }
|
322
|
+
|
323
|
+
# validates :first_name, format: { with: japanese_letters, message: 'is not full-width characters' }
|
324
|
+
|
325
|
+
# validates :email, uniqueness: { case_sensitive: true },
|
326
|
+
|
327
|
+
# format: { with: /\w+([-+.]\w+)*@\w+([-.]\w+)*/ }
|
328
|
+
|
329
|
+
# validates :password, length: {minimum: 6 },
|
330
|
+
|
331
|
+
# format: { with: /\A(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]+\z/, message: 'includes both half-width letters and half-width numbers' }
|
332
|
+
|
333
|
+
# validates :company, :password_confirmation
|
334
|
+
|
335
|
+
# end
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
has_many :pro_users
|
340
|
+
|
341
|
+
has_many :projects, through: :pro_users
|
342
|
+
|
343
|
+
has_many :messages
|
344
|
+
|
345
|
+
end
|
346
|
+
|
347
|
+
```
|
348
|
+
|
349
|
+
ターミナル
|
350
|
+
|
351
|
+
```
|
352
|
+
|
353
|
+
Parameters: {"authenticity_token"=>"ZOq+q72nyTZK7+6DAc1vIWclC/OS2UauGGAJ+BjjsUWwAvB4k2NaFLNB4cO32JbjZhgFPDuk25B3SFQGCVGtdw==", "project"=>{"name"=>"お試し", "user_ids"=>["1", "2"]}, "commit"=>"Create Project"}
|
354
|
+
|
355
|
+
User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
|
356
|
+
|
357
|
+
User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` IN (1, 2)
|
358
|
+
|
359
|
+
↳ app/controllers/projects_controller.rb:7:in `create'
|
360
|
+
|
361
|
+
(0.2ms) BEGIN
|
362
|
+
|
363
|
+
↳ app/controllers/projects_controller.rb:8:in `create'
|
364
|
+
|
365
|
+
Project Create (0.9ms) INSERT INTO `projects` (`name`, `created_at`, `updated_at`) VALUES ('お試し', '2020-09-04 05:43:52.654047', '2020-09-04 05:43:52.654047')
|
366
|
+
|
367
|
+
↳ app/controllers/projects_controller.rb:8:in `create'
|
368
|
+
|
369
|
+
ProUser Create (0.2ms) INSERT INTO `pro_users` (`user_id`, `project_id`, `created_at`, `updated_at`) VALUES (1, 4, '2020-09-04 05:43:52.657678', '2020-09-04 05:43:52.657678')
|
370
|
+
|
371
|
+
↳ app/controllers/projects_controller.rb:8:in `create'
|
372
|
+
|
373
|
+
ProUser Create (0.2ms) INSERT INTO `pro_users` (`user_id`, `project_id`, `created_at`, `updated_at`) VALUES (2, 4, '2020-09-04 05:43:52.659268', '2020-09-04 05:43:52.659268')
|
374
|
+
|
375
|
+
↳ app/controllers/projects_controller.rb:8:in `create'
|
376
|
+
|
377
|
+
(0.6ms) COMMIT
|
378
|
+
|
379
|
+
```
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
|
384
|
+
|
293
385
|
### 補足情報(FW/ツールのバージョンなど)
|
294
386
|
|
295
387
|
|
2
ご助言の対応結果更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -260,7 +260,35 @@
|
|
260
260
|
|
261
261
|
```
|
262
262
|
|
263
|
-
|
263
|
+
- user_idsという配列のパラメータが複数あることが原因と仮定
|
264
|
+
|
265
|
+
ビューファイルをい1行コメントアウトすることで、現在のユーザーidがパラメータに含まれないようにしてから実行
|
266
|
+
|
267
|
+
→試行前と同じエラーが出現したため配列内のパラメータ数は根本原因ではない可能性が高いことが推測された
|
268
|
+
|
269
|
+
```ERB
|
270
|
+
|
271
|
+
<div class='project-form__field--right'>
|
272
|
+
|
273
|
+
<select name='project[user_ids][]'>
|
274
|
+
|
275
|
+
<option value=''>アサインメンバーを選択してください</option>
|
276
|
+
|
277
|
+
<% User.all.where.not(id: current_user.id). each do |user| %>
|
278
|
+
|
279
|
+
<option value=<%=user.id%>><%= user.last_name %><%= user.first_name %></option>
|
280
|
+
|
281
|
+
<% end %>
|
282
|
+
|
283
|
+
</select>
|
284
|
+
|
285
|
+
#以下の1行をコメントアウト
|
286
|
+
|
287
|
+
<input name='project[user_ids][]' type='hidden' value=<%=current_user.id>>
|
288
|
+
|
289
|
+
</div>
|
290
|
+
|
291
|
+
```
|
264
292
|
|
265
293
|
### 補足情報(FW/ツールのバージョンなど)
|
266
294
|
|
1
問合せ箇所の強調
test
CHANGED
File without changes
|
test
CHANGED
@@ -204,7 +204,7 @@
|
|
204
204
|
|
205
205
|
|
206
206
|
|
207
|
-
- ターミナルでのエラー原因探索
|
207
|
+
- ターミナルでのエラー原因探索(★情報追加依頼の方にお示しした箇所)
|
208
208
|
|
209
209
|
[1][4][5]で示されている通り、user_idをもとにusersテーブルからデータの取得ができていないことが原因と考えられる
|
210
210
|
|