Exnum

Gem Version Build Status Code Climate Test Coverage

Exnum is enum extention for Rails. This gem extends enum about i18n and associated parameters.

Installation

Add this line to your application's Gemfile:

gem 'exnum'

And then execute:

$ bundle

Or install it yourself as:

$ gem install exnum

Usage

ActiveRecord:

class User < ActiveRecord::Base
  # the value of the key "val" defines enum values
  # and the others defines associated parameters
  exnum role: {
    guest:   {val: 10, label: :red },
    general: {val: 20, label: :green, permission: false },
    admin:   {val: 30, label: :blue,  permission: true},
  }
end

I18n:

ja:
  activerecord:
    enum:
      user:        # model name
        role:      # field name
          guest:   

Then you can use i18n extention

User.roles_i18n
# => {"guest" => "ゲスト", "general" => "一般ユーザー", "admin" => "管理者"}

user = User.new(role: :guest)
user.role_i18n
# => "ゲスト"

and assosiated parameter extention.

User.role_labels
# => {"guest" => :red, "general" => :green, "admin" => :blue}
User.role_permissions
# => {"guest" => nil, "general" => false, "admin" => true}

user = User.new(role: :general)
user.role_label
# => :green
user.role_permission
# => false

And of cause, you can use methods provided by enum.

exnum can also use as well as enum. Then you can use extention only about i18n.

class User < ActiveRecord::Base
  exnum role: [:guest, :general, :admin]
end
class User < ActiveRecord::Base
  exnum role: {guest: 10, general: 20, admin: 30}
end

Contributing

  1. Fork it!
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

License

The gem is available as open source under the terms of the MIT License.