That would be nice to have something like status_original, when you have an enum on a field called “status” to have an ability to get original data, 'cause now when I call .status I have enum name. So, there is an example:
class Some < ActiveRecord
enum :status, { cool: "There is really cold" }
end
record = Some.create
# BAD behaviour
record.status #=> "cool"
# GOOD behaviour
record.status #=> "There is really cold"
# OR
record.original_status #=> "There is really cold"
You have just completely missunderstood what ActiveRecord::Enum should be used for.
Enums connect a developer readable label with an integer column on the backend. What they really serve is to abstract away so that you as a developer do not need to care about what status = 5 means. The value should not matter.
While you can use other data types such as a varchar/text or native enum columns for the enum column it should still be something that can be effectively indexed and not some long user readible label that is likely to require change.
What you’re actually looking for is a structured data type such as JSON/JSONB or simply a lookup table.