From b46b677ca7dab482d1b26f9b12eb7ebfe6add586 Mon Sep 17 00:00:00 2001 From: James Smith Date: Tue, 10 Sep 2024 16:45:47 +0100 Subject: [PATCH] clear presupported relationship when related file is no longer presupported --- app/models/model_file.rb | 6 ++++++ spec/models/model_file_spec.rb | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/app/models/model_file.rb b/app/models/model_file.rb index fab2efb73..7b3d1f663 100644 --- a/app/models/model_file.rb +++ b/app/models/model_file.rb @@ -18,6 +18,8 @@ class ModelFile < ApplicationRecord validate :presupported_version_is_presupported validate :presupported_files_cannot_have_presupported_version + after_update :clear_presupported_relation, if: :presupported_previously_changed? + default_scope { order(:filename) } scope :unsupported, -> { where(presupported: false) } scope :presupported, -> { where(presupported: true) } @@ -180,4 +182,8 @@ def loader Mittsu::OBJLoader end end + + def clear_presupported_relation + unsupported_version&.update presupported_version: nil + end end diff --git a/spec/models/model_file_spec.rb b/spec/models/model_file_spec.rb index af6dc7849..1bf9f916f 100644 --- a/spec/models/model_file_spec.rb +++ b/spec/models/model_file_spec.rb @@ -137,5 +137,10 @@ expect(presupported).not_to be_valid expect(presupported.errors[:presupported_version].first).to eq "cannot be set on a presupported file" end + + it "clears presupported version if presupported file is set to unsupported" do + presupported.update!(presupported: false) + expect(unsupported.reload.presupported_version).to be_nil + end end end