Problem
Soft-delete gems (paranoia, discard) store a deleted_at or discarded_at timestamp. When a source contains soft-deleted rows and we stage them, the gem should preserve the column verbatim — but should not trigger the gem's "hide deleted rows" behavior during staging queries (since users often want to see them in staging to decide what to do).
Proposal
- Document that
deleted_at / discarded_at columns are carried through transfer verbatim (they're just regular columns to StagingTable, which is correct)
- Provide an
include_soft_deleted: true helper for the model-scoping issue (staging User.all bypassing default_scope { where(deleted_at: nil) })
- Add a test case that soft-deleted rows are preserved through a full upsert
Acceptance criteria
- Paranoia/discard integration test passes
- README has a note under model-scoping about soft-delete gems
- No surprise interactions with
extra_columns
Problem
Soft-delete gems (paranoia, discard) store a
deleted_atordiscarded_attimestamp. When a source contains soft-deleted rows and we stage them, the gem should preserve the column verbatim — but should not trigger the gem's "hide deleted rows" behavior during staging queries (since users often want to see them in staging to decide what to do).Proposal
deleted_at/discarded_atcolumns are carried through transfer verbatim (they're just regular columns to StagingTable, which is correct)include_soft_deleted: truehelper for the model-scoping issue (stagingUser.allbypassingdefault_scope { where(deleted_at: nil) })Acceptance criteria
extra_columns