質問編集履歴

2

説明の追加

2020/10/16 08:47

投稿

tarotarotarotar
tarotarotarotar

スコア41

test CHANGED
File without changes
test CHANGED
@@ -240,8 +240,108 @@
240
240
 
241
241
 
242
242
 
243
+ 【モデル】favaritesという中間テーブルとアソシエーションを組んでおります。
244
+
245
+ nutrition.rb
246
+
247
+ ```ここに言語を入力
248
+
249
+ class Nutrition < ApplicationRecord
250
+
251
+ belongs_to :user
252
+
253
+ has_many :favorites, foreign_key: true, dependent: :destroy
254
+
255
+ has_many :fav_users, through: :favorites, source: :user
256
+
257
+
258
+
259
+ with_options presence: true do
260
+
261
+ validates :ingredient
262
+
263
+ validates :calorie, numericality: { only_integer: true }
264
+
265
+ validates :protein, numericality: { only_integer: true }
266
+
267
+ validates :lipid, numericality: { only_integer: true }
268
+
269
+ validates :carbohydrate, numericality: { only_integer: true }
270
+
271
+ validates :potassium, numericality: { only_integer: true }
272
+
273
+ validates :calcium, numericality: { only_integer: true }
274
+
275
+ validates :iron, numericality: { only_integer: true }
276
+
277
+ validates :vitamin_a, numericality: { only_integer: true }
278
+
279
+ validates :vitamin_b1, numericality: { only_integer: true }
280
+
281
+ validates :vitamin_b2, numericality: { only_integer: true }
282
+
283
+ validates :vitamin_c, numericality: { only_integer: true }
284
+
285
+ validates :salt_equivalent, numericality: { only_integer: true }
286
+
287
+ end
288
+
289
+
290
+
291
+ def self.search(search)
292
+
293
+ if search != ""
294
+
295
+ Nutrition.where('ingredient LIKE(?)', "%#{search}%")
296
+
297
+ else
298
+
299
+ Nutrition.all
300
+
301
+ end
302
+
303
+ end
304
+
305
+ end
306
+
307
+
308
+
309
+ ```
310
+
311
+ favorite.rb
312
+
313
+ ```ここに言語を入力
314
+
315
+ class Favorite < ApplicationRecord
316
+
317
+ belongs_to :user
318
+
319
+ belongs_to :nutrition
320
+
321
+ validates_uniqueness_of :nutrition_id, scope: :user_id
322
+
323
+ end
324
+
325
+
326
+
327
+ コード
328
+
329
+ ```
330
+
331
+
332
+
243
333
  エラー分ではUnknown column 'favorites.true' in 'where clause'とありますが、今回のdestroyアクションではfavoritesに全く触れているつもりはないのですがなぜここで出てきてしまうのでしょうか。
244
334
 
245
335
 
246
336
 
337
+ アソシエーションにてdependent: :destroyが組んであるので試しに消去してみると以下のエラーが発生します。
338
+
339
+ Mysql2::Error: Cannot delete or update a parent row: a foreign key constraint fails (`berries_development`.`favorites`, CONSTRAINT `fk_rails_2201ed1284` FOREIGN KEY (`nutrition_id`) REFERENCES `nutritions` (`id`))
340
+
341
+
342
+
343
+
344
+
345
+ 何が原因なのかがわかりません・・・
346
+
247
347
  ご教授いただけますと幸いです。

1

脱字があった

2020/10/16 08:47

投稿

tarotarotarotar
tarotarotarotar

スコア41

test CHANGED
File without changes
test CHANGED
@@ -14,6 +14,8 @@
14
14
 
15
15
 
16
16
 
17
+ userが登録済みのnutrition(食材)を削除するという簡単な動作です。
18
+
17
19
  destroyアクションをビューから呼び出している際に発生していると思われます。
18
20
 
19
21
  対象のコードは以下になります。