Skip to content

ninja-loss/enumerative

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Enumerative

Provides enumeration functionality.

Installation

Add this line to your application's Gemfile:

gem 'enumerative'

And then execute:

$ bundle

Or install it yourself as:

$ gem install enumerative

Usage

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

Generator

Generate an enumeration, its spec and the translations for the en.yml file

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

About

Provides enumeration functionality.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages