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
|