Module: StoreModel::Enum

Defined in:
lib/store_model/enum.rb

Instance Method Summary collapse

Instance Method Details

#enum(name, values = nil, **kwargs) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/store_model/enum.rb', line 5

def enum(name, values = nil, **kwargs)
  values ||= kwargs[:in] || kwargs

  ensure_hash(values).tap do |mapping|
    define_attribute(name, mapping, kwargs[:default])
    define_reader(name, mapping)
    define_writer(name, mapping)
    define_method("#{name}_value") { attributes[name.to_s] }
    define_method("#{name}_values") { mapping }
    define_predicate_methods(name, mapping)
  end
end