A Sequel plugin that provides enum_values(field)
method to your models.
Add this line to your project's Gemfile:
gem 'sequel-enum_values', require: 'sequel/plugins/enum_values'
And then execute:
$ bundle
Install this gem as:
$ gem install sequel-enum_values
And then require it in your project:
require 'sequel/plugins/enum_values'
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
end
Then 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"]
Plugin caches enum values for each field by default.
But you can disable it:
Item.plugin :enum_values, caching: false
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? # => false
Or 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? # => false
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.
Bug reports and pull requests are welcome on GitHub.
The gem is available as open source under the terms of the MIT License.