массовое назначение .update не зависимый от вызова:: destroy on children - PullRequest
0 голосов
/ 09 июля 2020

Как следует из названия, у меня есть модель с ассоциацией has_many. У этого также есть своя собственная ассоциация has_many, но я вернусь к ней позже.

class List < ApplicationRecord
  has_many :items, dependent: :destroy
end
class Item < ApplicationRecord
  belongs_to :list
  has_many :messages, dependent: :destroy
end
current_ids = [2, 4, 5]

list.update(item_ids: [2,4]) #should destroy item with id: 5 and subsequent messages. 

для родительского элемента, я вызываю .update и удаляю идентификатор из массива связанных идентификаторов с этой моделью. Это, в свою очередь, должно уничтожить дочерний элемент и перейти к разрушению его собственных ассоциаций сообщений has_many. Но я получаю ошибку ограничения внешнего ключа, предполагающую, что я осиротел последнюю ассоциацию has_many.

При тестировании зависимого метода:: destroy оказалось, что он вообще не запускается ни для Items, ни для сообщений .

Я что-то упустил?

Ожидаемое поведение. обновить список с новыми идентификаторами элементов, уничтожить удаленные элементы и последующие сообщения

...