Module: SearchObject::Plugin::Enum::Handler
- Defined in:
- lib/search_object/plugin/enum.rb
Class Method Summary collapse
- .apply_filter(object:, option:, enums:, scope:, value:) ⇒ Object
- .build(name, enums) ⇒ Object
- .handle_invalid_value(object:, option:, enums:, scope:, value:) ⇒ Object
Class Method Details
.apply_filter(object:, option:, enums:, scope:, value:) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/search_object/plugin/enum.rb', line 29 def apply_filter(object:, option:, enums:, scope:, value:) return if value.nil? || value == '' return handle_invalid_value(object: object, option: option, enums: enums, scope: scope, value: value) unless enums.include? value.to_s object.send("apply_#{Helper.underscore(option)}_with_#{Helper.underscore(value)}", scope) end |
.build(name, enums) ⇒ Object
23 24 25 26 27 |
# File 'lib/search_object/plugin/enum.rb', line 23 def build(name, enums) enums = enums.map(&:to_s) handler = self ->(scope, value) { handler.apply_filter(object: self, option: name, enums: enums, scope: scope, value: value) } end |
.handle_invalid_value(object:, option:, enums:, scope:, value:) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/search_object/plugin/enum.rb', line 37 def handle_invalid_value(object:, option:, enums:, scope:, value:) specific = "handle_invalid_#{option}" return object.send(specific, scope, value) if object.respond_to? specific, true return object.handle_invalid_enum(option, scope, value) if object.respond_to? :handle_invalid_enum, true raise InvalidEnumValueError.new(option, enums, value) end |