Sequel enum_values plugin
A Sequel plugin that provides enum_values(field) method to your models.
Installation
Bundler
Add this line to your project's Gemfile:
gem 'sequel-enum_values', require: 'sequel/plugins/enum_values'And then execute:
$ bundle
Manually
Install this gem as:
$ gem install sequel-enum_values
And then require it in your project:
require 'sequel/plugins/enum_values'Usage
If you have database schema like this:
create_enum :item_type, %w[first second third]
create_enum :item_status, %w[created selected canceled]
create_table :items do
  primary_key :id
  column :type, :item_type
  column :status, :item_status
endThen you can use it like this:
class Item < Sequel::Model
  plugin :enum_values
end
Item.enum_values(:type) # => ["first", "second", "third"]
Item.enum_values(:status) # => ["created", "selected", "canceled"]Caching
Plugin caches enum values for each field by default.
But you can disable it:
Item.plugin :enum_values, caching: falsePredicate methods
Plugin can define instance methods for all enum values:
Item.plugin :enum_values, predicate_methods: true # default is `false`
item = Item.new(type: 'first', status: 'created')
item.first? # => true
item.second? # => false
item.created? # => true
item.selected? # => falseOr just for specific fields:
Item.plugin :enum_values, predicate_methods: %i[status]
# or just `:status` for single value
item = Item.new(type: 'first', status: 'created')
item.first? # => NoMethodError
item.created? # => true
item.selected? # => falseDevelopment
After checking out the repo, run bundle install to install dependencies.
Then, run toys rspec to run the tests.
To install this gem onto your local machine, run toys gem install.
To release a new version, run toys gem release %version%.
See how it works here.
Contributing
Bug reports and pull requests are welcome on GitHub.
License
The gem is available as open source under the terms of the MIT License.