Восстановление рекурсивного не восстанавливает записи в объединяемой таблице

Настроить

class Profile < ApplicationRecord
  acts_as_paranoid

  has_many :degreeholderships
  has_many :degrees, through: :degreeholderships, dependent: :destroy
end

class Degreeholdership < ApplicationRecord
  acts_as_paranoid column: :active, sentinel_value: true

  belongs_to :profile
  belongs_to :degree

  validates :profile_id, presence: true
  validates :degree_id, presence: true

  def paranoia_restore_attributes
    {
      deleted_at: nil,
      active: true
    }
  end

  def paranoia_destroy_attributes
    {
      deleted_at: current_time_from_proper_timezone,
      active: nil
    }
  end
end

class Degree < ApplicationRecord
  has_many :degreeholderships
  has_many :profiles, through: :degreeholderships, dependent: :destroy
end

Действия по воспроизведению:

  1. вызовите метод уничтожения в профиле.
  2. записи в таблице степеней владения помечены как активные =NULL и имеют удаленную метку = отметка времени
  3. вызовите метод восстановления в профиле и передайте рекурсив: true
    • profile.restore (рекурсивно: верно)
  4. записи в таблице степени остаются неизменными

Ожидаемый результат:

  • записи в степени владения, которые были связаны с профилем, также должны быть восстановлены.

Я попытался запустить восстановление с параметром recursive: true и без него, а также установить значение recovery_window. Все отображают это поведение. Я также удалил опцию использования активного столбца и вернул его обратно к использованию dele_at (по умолчанию).

Я смотрю, чтобы понять, является ли это поведение:

  1. Из-за ошибки в моей настройке.
  2. На самом деле ожидаемое поведение и, если да, объясните, почему это предпочтительнее, чем возможность рекурсивного восстановления иждивенцев.
  3. Это ошибка с драгоценным камнем.

1 ответ

Параметры: {"type" => "restore", "id" => "18"}

Pt Load (0,6 мс) ВЫБРАТЬ "pts".* FROM "pts" WHERE "pts"."Удаленный_at" IS NULL И "pts". "Id" = $1 LIMIT $2 [["id", 18], ["LIMIT", 1]]

переопределение запросов по умолчанию работает для всех методов, кроме уничтожения, реального уничтожения и восстановления

Завершено 401 Несанкционированный в 9 мс (ActiveRecord: 1,3 мс)

ActiveRecord:: RecordNotFound (Не удалось найти продукт с 'id'=18 [WHERE "pts"."Удаленный_в" IS NULL]):

Это простая 1 таблица без ассоциаций?

Другие вопросы по тегам