Существует модель с двумя зависимыми моделями, настроенными на уничтожение.
class Deal < ApplicationRecord
has_many :likes, dependent: :destroy
has_many :detections, dependent: :destroy
end
Я вызываю для нее destroy_all.
Deal.where("updated_at < ?", 2.days.ago).destroy_all
И получаю ошибку нарушенного ограничения.
(0.7ms) BEGIN
(2.0ms) UPDATE "likes" SET "deal_id" = $1 WHERE "likes"."deal_id" = $2 [["deal_id", nil], ["deal_id", 94063]]
(0.7ms) ROLLBACK
ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column "deal_id" violates not-null constraint)
DETAIL: Failing row contains (8, 4, null, 2020-03-14 03:04:25.824787, 2020-03-14 03:04:25.824787).
Похоже, Rails пытается nullify
зависимых лайков, хотя я указал destroy
. И я не имею ни малейшего представления, почему.