前提・実現したいこと
タイトルの通りhas_many belongs_to で関連付けしたモデルのdependent: :destroyが機能しません
エラーメッセージが出る訳ではないのですが実際にDBを見てみると反映されていません
userテーブルとbandテーブルがrelationshipテーブルを中間テーブルとして繋がっています
notification(通知)テーブルは中間テーブルを通さずuserテーブルとbandテーブルに繋がっています
自分ではどこでミスをしているのかわからなかったので教えて頂きたいです
該当のソースコード
user.rb class User < ApplicationRecord has_many :relationships, dependent: :destroy has_many :bands, through: :relationships has_many :quit_notifications, class_name: 'Notification', foreign_key: 'quit_user_id', dependent: :destroy has_many :active_notifications, class_name: 'Notification', foreign_key: 'visitor_id', dependent: :destroy has_many :passive_notifications, class_name: 'Notification', foreign_key: 'visited_id', dependent: :destroy end
band.rb class Band < ApplicationRecord has_many :relationships, dependent: :destroy has_many :users, through: :relationships has_many :notifications, dependent: :destroy accepts_nested_attributes_for :relationships, allow_destroy: true end
relationship.rb class Relationship < ApplicationRecord belongs_to :user, optional: true belongs_to :band end
notificatioin.rb class Notification < ApplicationRecord default_scope -> { order(created_at: :desc) } belongs_to :band, optional: true belongs_to :visitor, class_name: 'User', foreign_key: 'visitor_id', optional: true belongs_to :visited, class_name: 'User', foreign_key: 'visited_id', optional: true belongs_to :quit_user, class_name: 'User', foreign_key: 'quit_user_id', optional: true end
試したこと
dependet: :delete_allでもダメでした
補足情報(FW/ツールのバージョンなど)
Rails 6.0.3.2, ruby 2.6.6p146
あなたの回答
tips
プレビュー