Sha256: 29a581f076af7bd8a29a0ca2d3253fcfde001d24fd828932fd98f84c6111044e
Contents?: true
Size: 605 Bytes
Versions: 2
Compression:
Stored size: 605 Bytes
Contents
require "active_support/core_ext/object/inclusion" class Kredis::Types::Enum < Kredis::Types::Proxying proxying :set, :get, :del attr_accessor :values, :default def initialize(...) super define_predicates_for_values end def value=(value) if validated_choice = value.presence_in(values) set validated_choice end end def value get || default end def reset del end private def define_predicates_for_values values.each do |defined_value| define_singleton_method("#{defined_value}?") { value == defined_value } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
kredis-0.4.0 | lib/kredis/types/enum.rb |
kredis-0.3.1 | lib/kredis/types/enum.rb |