Adding a Postgres ENum type via. migration breaks db/schema.rb table entry

Hello, So I’m adding a Postgres Enum Type with a migration but I’m having a problem with db/schema.rb output breaking when I do this:

def up
execute <<-SQL.squish
CREATE TYPE three_letters_type AS ENUM (
‘A’,
‘B’,
‘C’,
);
SQL
execute <<-SQL.squish
ALTER TABLE test
ADD COLUMN three_letters three_letters_type;
SQL
end

``

I end up with the following comments in db/schema.rb -

Could not dump table “test” because of following StandardError

Unknown type ‘three_letters_type’ for column ‘three_letters’

``

It’s quite important for me to be able to use Enums because unique-indexes across several columns are expensive and it’s highly preferable not to use t.string (varchar) here. Would be great to hear if there is a work-around for this, thanks.

activerecord will complain : ) see
http://edgeguides.rubyonrails.org/active_record_postgresql.html

so to dump schema, try

config.active_record.schema_format = :sql #instead of :ruby default

kind regards
--botp

I found another way around this so you could still use the ruby version of schema dumper. You must create an initializer to add your custom types to the active record psotgress adapter. I wrote up the answer here:

https://stackoverflow.com/a/45430348/1019660

(This post was the first place I saw talking about it so wanted to make sure anyone else stumbling across it found a good answer)