ActiveRecord::Mysql::Enum Coverage Status

This gem is an extension to ActiveRecord which enables native support of enumerations in the database schema using the ENUM type in MySQL. Forked and revitalized from enum_column3 which was itself a fork of a fork of Nick Pohodnya's original gem for Rails 3, enum_column3.


Currently this is tested with Rails version 5.2, 6.0, 6.1, and 7.0.

Supported adapters:

  • mysql2


In your Gemfile add the following snippet

gem 'activerecord-mysql-enum', '~> 1.0', require: 'active_record/mysql/enum'


Schema Definitions

When defining an enum in your schema, specify the constraint as a limit:

create_table :enumerations, :force => true do |t|
  t.column :severity, :enum, :limit => [:low, :medium, :high, :critical], :default => :medium
  t.column :color, :enum, :limit => [:red, :blue, :green, :yellow]

Model Validations

You can then automatically validate this column using:

validates_columns :severity, :color

Setting/Getting Values

All enumerated values will be given as symbols.

@e =
@e.severity = :medium

You can always use the column reflection to get the list of possible values from the database column.

irb(1)> Enumeration.columns_hash['color'].limit
=> [:red, :blue, :green, :yellow]
irb(2)> @enumeration.column_for_attribute(:color).limit
=> [:red, :blue, :green, :yellow]