Вы можете просто удалить элементы, просто добавьте dependent: :destroy
к has_many :items
.
class Collection < ApplicationRecord
has_many :searches, through: :items
has_many :items, dependent: :destroy
end
После уничтожения коллекции, элемент уничтожается, но поиск продолжается.
второе решение
Вы можете даже применить dependent: :nullify
к has_many :searches
- получить тот же результат.
class Collection < ApplicationRecord
has_many :searches, through: :items, dependent: :nullify
has_many :items
end
От документы :
collection.delete (object,…)
Удаляет один или несколько объектов из коллекции, установив для их внешних ключей значение NULL
.Объекты будут дополнительно уничтожены, если они связаны с dependent: :destroy
, и удалены, если они связаны с dependent: :delete_all
.
Если используется опция :through
, то записи о соединении удаляются (вместо нуля) по умолчанию, но вы можете указать dependent: :destroy
или dependent: :nullify
, чтобы переопределить это.