Восстановление рекурсивного не восстанавливает записи в объединяемой таблице
Настроить
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
Действия по воспроизведению:
- вызовите метод уничтожения в профиле.
- записи в таблице степеней владения помечены как активные =NULL и имеют удаленную метку = отметка времени
- вызовите метод восстановления в профиле и передайте рекурсив: true
- profile.restore (рекурсивно: верно)
- записи в таблице степени остаются неизменными
Ожидаемый результат:
- записи в степени владения, которые были связаны с профилем, также должны быть восстановлены.
Я попытался запустить восстановление с параметром recursive: true и без него, а также установить значение recovery_window. Все отображают это поведение. Я также удалил опцию использования активного столбца и вернул его обратно к использованию dele_at (по умолчанию).
Я смотрю, чтобы понять, является ли это поведение:
- Из-за ошибки в моей настройке.
- На самом деле ожидаемое поведение и, если да, объясните, почему это предпочтительнее, чем возможность рекурсивного восстановления иждивенцев.
- Это ошибка с драгоценным камнем.
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 таблица без ассоциаций?