The method describing how to change an
Active Record and PostgreSQL is a bit awkward. It put me on the wrong path for a bit. I found you can also change an enum by:
renaming all the columns using it
creating a new enum
creating a new column using that enum
do some copying of values.
It runs in a transaction
You can add/remove/rename enum values
Here’s a gist of the helper I created to do this in my project: https://gist.github.com/StefanH/fe5f27793ed2fccc4123. Used this on pretty big production tables, no problem. Should we change it?