Как следует из названия, у меня есть модель с ассоциацией 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, ни для сообщений .
Я что-то упустил?
Ожидаемое поведение. обновить список с новыми идентификаторами элементов, уничтожить удаленные элементы и последующие сообщения