Provides enumeration functionality.
Add this line to your application's Gemfile:
gem 'enumerative'
And then execute:
$ bundle
Or install it yourself as:
$ gem install enumerative
Create an enumeration class and include the modiule.
class Color
def self.valid_keys
%w(
black
blue
green
)
end
include Enumerative::Enumeration # this must come after ::valid_keys
end
Declare the enumeration in an ActiveModel.
class Vehicle
include Enumerative::HasEnumeration
# add_column :vehicles, :color, :string, :limit => 35
has_enumeration :color, :from => Color
end
Translate the enumeration using localization:
en:
enumerations:
color:
black: Black
blue: Blue
green: Green
Use the enumeration:
vehicle = Vehicle.create( :color => 'black' )
vehicle.attributes['color'] # => black
vehicle.color # => #<Color:0x10702d5e8 @key="black">
vehicle.color.key # => black
vehicle.color.value # => Black
vehicle.color.to_s # => black
To the default app/models/enumerations directory:
rails generate enumerative:enumeration color black:Black blue:Blue green:Green
To a specific directory:
rails generate enumerative:enumeration color some/path black:Black blue:Blue green:Green
Namespaced:
rails generate enumerative:enumeration namespace/color black:Black blue:Blue green:Green