Module: Decay::ActiveEnum

Defined in:
lib/decay/active_enum.rb

Instance Method Summary collapse

Instance Method Details

#active_enum(**rules) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/decay/active_enum.rb', line 3

def active_enum(**rules)
  rules.each do |enum_name, enum_values|
    enumerated_type_class =
      if enum_values.is_a?(Hash)
        ::Decay::EnumeratedType.create(nil, **enum_values)
      else
        ::Decay::EnumeratedType.create(nil, *enum_values)
      end

    meta = Decay::Metaprogramming.new(
      class: self,
      enumerated_type: enumerated_type_class,
      enumerated_type_name: enum_name
    )

    meta.define_enumerated_type

    meta.define_active_record_attribute
    meta.define_active_record_bang_setters
    meta.define_active_record_question_getters

    meta.define_active_record_scopes
  end
end