create_enum :mood, %w(happy great been_better)

create_table :person do
  t.enum :person_mood, enum_type: :mood

Running the code above will create a person table, with a person_mood column of type mood. This will also be reflected in schema.rb, so rake db:schema:load works as expected.

To drop an existing enum:

drop_enum :mood

To rename an existing enum:

rename_enum :mood, :emotions

To add a value into existing enum:

add_enum_value :mood, "pensive"

To remove a value from existing enum:

Warning: make sure that value is not used anywhere in the database.

remove_enum_value :mood, "pensive"

To add a new enum column to an existing table:

def change
  create_enum :product_type, %w[one-off subscription]

  add_column :products, :type, :product_type

To rename a value:

rename_enum_value :mood, "pensive", "wistful"

In the same orbit

Explore more open source projects

How can we help you?

Martians at a glance
years in business

We transform growth-stage startups into unicorns, build developer tools, and create open source products.

If you prefer email, write to us at