Module: ReadableEnums::ClassMethods

Defined in:
lib/readable_enums.rb

Instance Method Summary collapse

Instance Method Details

#readable_enum(name, values, **args) ⇒ Object



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

def readable_enum(name, values, **args)
  validates_args = args.slice(:allow_nil, :if).compact

  validates name.to_sym, inclusion: { in: values, message: "%{value} is not a valid #{name}" }, **validates_args

  values.each do |enum|
    define_method(:"#{enum}?") { send(name.to_s) == enum }
    define_method(:"#{enum}!") { update(name.to_s => enum) }
    define_singleton_method(:"#{enum}") { where(name.to_s => enum) } unless args[:with_scopes] == false
  end
end