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 ActiveRecord version 5.2, 6.0, 6.1, and 7.0.
Gemfile add the following snippet
gem 'activerecord-mysql-enum', '~> 1.0', require: 'active_record/mysql/enum'
In order to initialize the extension in non-Rails applications, you must add the following line to your application's bootstrapping code after ActiveRecord has been initialized.
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] end
You can then automatically validate this column using:
validates_columns :severity, :color
All enumerated values will be given as symbols.
@e = Enumeration.new @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]