MySQL Enum column type support for Rails >= 4.*
How to use it.
In you Gemfile:
gem 'mysql_enum_column'
Then: bundle install
In your schema:
When you create 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
In the model:
You can then automatically validate this column using:
validates_columns :severity, :color
The rest will be handled for you. 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.
Enumeration.columns_hash['color'].limit
# or
@enumeration.column_for_attribute(:color).limit
Will yield: [:red, :blue, :green, :yellow]
In views:
You can use enum_select helper to generate input for enumerated attribute as:
<%= enum_select(@enumeration, 'severity')%>
or
<%= form_for @enumeration do |f| %>
<%= f.label :severity %>
<%= f.enum_select :severity %>
<% end %>