railsのアソシエーションで中間テーブルは持つが、中間モデルはもたないhas_and_belongs_to_many関連付けがあります。
この関連付けでdependent: :destroyオプションをつけた際は、中間テーブルのレコードが削除される挙動でした。
関連付け名は中間テーブルではないのであまり直感的ではないですが、上記挙動をとるようです。
class ChefFood < ApplicationRecord has_and_belongs_to_many :tags, dependent: :destroy
class Tag < ApplicationRecord has_and_belongs_to_many :chef_foods end
tagは削除されない↓
[13] pry(main)> ChefFood.first.destroy ChefFood Load (0.4ms) SELECT `chef_foods`.* FROM `chef_foods` ORDER BY `chef_foods`.`id` ASC LIMIT 1 (0.3ms) BEGIN ChefFoodImage Load (0.5ms) SELECT `chef_food_images`.* FROM `chef_food_images` WHERE `chef_food_images`.`chef_food_id` = 2 SQL (0.9ms) DELETE FROM `chef_food_images` WHERE `chef_food_images`.`id` = 3 SQL (0.7ms) DELETE FROM `chef_food_images` WHERE `chef_food_images`.`id` = 4 ChefFoodAvailableDay Load (0.6ms) SELECT `chef_food_available_days`.* FROM `chef_food_available_days` WHERE `chef_food_available_days`.`chef_food_id` = 2 SQL (0.6ms) DELETE FROM `chef_food_available_days` WHERE `chef_food_available_days`.`id` = 3 SQL (0.5ms) DELETE FROM `chef_food_available_days` WHERE `chef_food_available_days`.`id` = 4 SQL (0.6ms) DELETE FROM `chef_foods_tags` WHERE `chef_foods_tags`.`chef_food_id` = 2 SQL (0.5ms) DELETE FROM `chef_foods` WHERE `chef_foods`.`id` = 2
難しい事はよくわかりませんが、上の写真に見せられました。
美味しそうなコーヒーが周りの暗い色により一層美味しそうに見えて・・
コーヒー大好きな私にとってこの写真は
たまりません。