Зависимый установлен на уничтожение, вместо этого обнуляется - PullRequest
0 голосов
/ 17 марта 2020

Существует модель с двумя зависимыми моделями, настроенными на уничтожение.

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. И я не имею ни малейшего представления, почему.

1 Ответ

1 голос
/ 17 марта 2020

Отношение было переопределено в концерне.

module Likeable
  extend ActiveSupport::Concern

  included do
    has_many :likes

    ...
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...