Module: Model::Enum::ClassMethods

Defined in:
app/models/concerns/model/enum.rb

Instance Method Summary collapse

Instance Method Details

#enum(attr_name, enum_class_name) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/models/concerns/model/enum.rb', line 6

def enum(attr_name, enum_class_name)
  klass = enum_class_name.constantize
  keys = klass.send(attr_name.to_s.pluralize).keys

  keys.each do |key|
    define_method "#{key}?" do
      send(attr_name) == key
    end
  end

  validates attr_name, inclusion: { in: keys } # allow nil values

  define_method "formatted_#{attr_name}" do
    send(attr_name).titleize
  end
end