module SimpleEnum::Scopes::Extension
Public Instance Methods
generate_enum_scopes_extension_for(enum, accessor)
click to toggle source
# File lib/simple_enum/scopes/extension.rb, line 4 def generate_enum_scopes_extension_for enum, accessor define_range_scope_method(enum, accessor) define_multiple_values_scope_method(enum, accessor) end
Private Instance Methods
define_multiple_values_scope_method(enum, accessor)
click to toggle source
# File lib/simple_enum/scopes/extension.rb, line 17 def define_multiple_values_scope_method(enum, accessor) # arr can be an array of values or a single value singleton_class.send(:define_method, "#{accessor.name.pluralize}_as") do |arr| targeted_values = Array(arr).map(&:to_s) & enum.keys where(accessor.source => targeted_values.map{ |value| enum[value] }) end end
define_range_scope_method(enum, accessor)
click to toggle source
# File lib/simple_enum/scopes/extension.rb, line 11 def define_range_scope_method(enum, accessor) singleton_class.send(:define_method, "#{accessor.name}_between") do |min_val, max_val| where(accessor.source => enum[min_val]..enum[max_val]) end end