diff --git a/app/models/contact_topic_answer.rb b/app/models/contact_topic_answer.rb index 7c3430149b..0562e1b694 100644 --- a/app/models/contact_topic_answer.rb +++ b/app/models/contact_topic_answer.rb @@ -1,6 +1,7 @@ class ContactTopicAnswer < ApplicationRecord belongs_to :case_contact belongs_to :contact_topic, optional: true + acts_as_paranoid has_one :casa_case, through: :case_contact has_one :casa_org, through: :case_contact @@ -17,6 +18,7 @@ class ContactTopicAnswer < ApplicationRecord # Table name: contact_topic_answers # # id :bigint not null, primary key +# deleted_at :datetime # selected :boolean default(FALSE), not null # value :text # created_at :datetime not null diff --git a/db/migrate/20260414132818_add_deleted_at_to_contact_topic_answers.rb b/db/migrate/20260414132818_add_deleted_at_to_contact_topic_answers.rb new file mode 100644 index 0000000000..304ead8d5c --- /dev/null +++ b/db/migrate/20260414132818_add_deleted_at_to_contact_topic_answers.rb @@ -0,0 +1,5 @@ +class AddDeletedAtToContactTopicAnswers < ActiveRecord::Migration[7.2] + def change + add_column :contact_topic_answers, :deleted_at, :datetime + end +end diff --git a/db/schema.rb b/db/schema.rb index 9d2932efe7..ec47e5b18f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.2].define(version: 2026_02_11_001655) do +ActiveRecord::Schema[7.2].define(version: 2026_04_14_132818) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -259,6 +259,7 @@ t.boolean "selected", default: false, null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.datetime "deleted_at" t.index ["case_contact_id"], name: "index_contact_topic_answers_on_case_contact_id" end diff --git a/spec/models/contact_topic_answer_spec.rb b/spec/models/contact_topic_answer_spec.rb index 18f8112385..76395e9295 100644 --- a/spec/models/contact_topic_answer_spec.rb +++ b/spec/models/contact_topic_answer_spec.rb @@ -11,4 +11,19 @@ create(:contact_topic_answer, value: Faker::Lorem.characters(number: 300)) }.not_to raise_error end + + it "soft deletes record instead of removing it from database" do + answer = create(:contact_topic_answer) + + answer.destroy + + expect(answer.deleted_at).not_to be_nil + expect(ContactTopicAnswer.with_deleted).to include(answer) + expect(ContactTopicAnswer.all).not_to include(answer) + + answer.restore + + expect(answer.deleted_at).to be_nil + expect(ContactTopicAnswer.all).to include(answer) + end end diff --git a/spec/requests/contact_topic_answers_spec.rb b/spec/requests/contact_topic_answers_spec.rb index 07c96b4f94..903b2a3f2b 100644 --- a/spec/requests/contact_topic_answers_spec.rb +++ b/spec/requests/contact_topic_answers_spec.rb @@ -35,7 +35,7 @@ answer = ContactTopicAnswer.last expect(response_json[:id]).to eq answer.id expect(response_json.keys) - .to contain_exactly(:id, :contact_topic_id, :value, :case_contact_id, :created_at, :updated_at, :selected) + .to contain_exactly(:id, :contact_topic_id, :value, :case_contact_id, :created_at, :updated_at, :selected, :deleted_at) end context "as casa_admin" do