Add ON DELETE CASCADE to rejected_transfers foreign keys (#2211)

This commit is contained in:
Kelvinchen03
2026-06-16 11:22:59 -04:00
committed by GitHub
parent 844cba2fd3
commit 11bba13601
3 changed files with 37 additions and 2 deletions

View File

@@ -0,0 +1,11 @@
class AddCascadeToRejectedTransfersForeignKeys < ActiveRecord::Migration[7.2]
def change
remove_foreign_key :rejected_transfers, to_table: :transactions, column: :inflow_transaction_id
remove_foreign_key :rejected_transfers, to_table: :transactions, column: :outflow_transaction_id
add_foreign_key :rejected_transfers, :transactions,
column: :inflow_transaction_id, on_delete: :cascade
add_foreign_key :rejected_transfers, :transactions,
column: :outflow_transaction_id, on_delete: :cascade
end
end

4
db/schema.rb generated
View File

@@ -2134,8 +2134,8 @@ ActiveRecord::Schema[7.2].define(version: 2026_06_07_071000) do
add_foreign_key "recurring_transactions", "accounts", on_delete: :cascade
add_foreign_key "recurring_transactions", "families"
add_foreign_key "recurring_transactions", "merchants"
add_foreign_key "rejected_transfers", "transactions", column: "inflow_transaction_id"
add_foreign_key "rejected_transfers", "transactions", column: "outflow_transaction_id"
add_foreign_key "rejected_transfers", "transactions", column: "inflow_transaction_id", on_delete: :cascade
add_foreign_key "rejected_transfers", "transactions", column: "outflow_transaction_id", on_delete: :cascade
add_foreign_key "rule_actions", "rules"
add_foreign_key "rule_conditions", "rule_conditions", column: "parent_id"
add_foreign_key "rule_conditions", "rules"

View File

@@ -21,4 +21,28 @@ class Transactions::BulkDeletionsControllerTest < ActionDispatch::IntegrationTes
assert_redirected_to transactions_url
assert_equal "#{delete_count} transactions deleted", flash[:notice]
end
test "bulk delete with rejected transfers" do
entry = entries(:transaction)
other_entry = entries(:transfer_out)
# Create a rejected_transfer referencing the entry's transaction
RejectedTransfer.create!(
inflow_transaction: entry.entryable,
outflow_transaction: other_entry.entryable
)
assert_difference "RejectedTransfer.count", -1 do
assert_difference [ "Transaction.count", "Entry.count" ], -1 do
post transactions_bulk_deletion_url, params: {
bulk_delete: {
entry_ids: [ entry.id ]
}
}
end
end
assert_redirected_to transactions_url
assert_equal "1 transaction deleted", flash[:notice]
end
end